{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Reading ChemDraw files\n", "\n", "Molli features a robust Chemdraw parser, specifically designed to work with the `CDXML` format. This parser is capable of parsing point, axial, and planar chirality, along with full structure labels, substructure labels, atom labels, charges, and multiplicities. This notebook will explain its properties and how to use it.\n", "\n", "## Reading Example" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/blakeo2/new_molli/molli_dev/molli/molli/ftypes/cdxml.py:157: CDXMLSyntaxWarning: CDXML file /home/blakeo2/new_molli/molli_dev/molli/molli/files/parser_demo.cdxml contains redundant label 'naphthalene' Only the first occurrence will be kept.\n", " warn(\n" ] } ], "source": [ "#This imports molli\n", "import molli as ml\n", "\n", "#This configures the visualization tool\n", "ml.visual.configure(bgcolor='white')\n", "\n", "# This just loads an example file that contains boundary cases\n", "cdxf = ml.CDXMLFile(ml.files.parser_demo_cdxml)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Note: The file was designed to purposely show the warnings when duplicate structures are present!\n", "\n", "The `CDXMLFile` class can be thought of as a dictionary, with keys being the label, and the values being the `Molecule`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['benzene', 'naphthalene', 'stereo', 'decoy', 'isotopes', 'phenanthrene_ar', 'estradiol', 'taxadiene', 'substruct_stereo', 'high_complexity_1', 'r_binol', 'chiral_fragment', 'attached_acronym', 'Taniaphos', 'BrettPhos', 'toluene', 'stereo_groups', 'attachments'])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This will display the list of all named molecules in the file.\n", "cdxf.keys()" ] }, { "attachments": { "Point_Chirality.PNG": { "image/png": "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ert5dV1zxz2K6iAUAaiJUITVyN2riJaJ+XnrIRRaJubVda8irrebV9c1d9yjqA5CEYCaCEVYjdy9imiZmF/uuglaJubVda8irrebV+6aO+5RVA+hCEBNhCKsRu5eRbRMzC933QQtE/PqulcR19vNK3fNHfcoqodQBKAmQhFWI3evIlom5pcb8YxrJuaXulcRLRPzy7XccY+ieghFAGoiFGE1cvcqomVifrkRz7hmYn6pexXRMjG/XMsd9yiqh1AEoCZCEVYjd68irpmYX2rEM1omlpFquaNlYhmpljvuUVTPixcvDjdu3Dgp+n8f7969GzwvgDYQirAauXsVcc3E/FIjntEysYxUyx0tE8tItdxxjyIA2CZCEVbFu1cR9yhaRuq6CVomlpFquaNlYhmpljuutwOAbSIUYVW8exVxj6JlpK6boGViGamWO1omlpFqueN6OwDYJkIRVsW7VxH3KFqOd90ELRPLSLXc0TKxDK/ljuvt6tJgCRokQeXp06fHR8t8+PDhdF69DgDECEVYFe9eRdyjaDnedRO0TCwj1XJHy8QyvJY7rrerS4HGLm/dL6oUo88B6EIowqp49yriHkXL8a6boGViOXHLHS0Ty/Fa7rjerq44FKl8+vTp+GweoQhAF0IRVsW7VxH3KFqOd90ELRPLiVvuaJlYjtdyx/V2dXmh6Pbt28dn8whFALoQirAq3r2KdEYWy4ivm6BlYllxyx0tE8uKW+643q4uLxSplHSjIxQB6EIowqp49yrSGVksI75ugpaJZcUtd7RMLCtuueN6u7pSoUilqxsdoQhAF0IRVsfeq0hnYrGc+LoJWiaWFbfc0TKxrLjljuvt6rKhSP+/cuXK6d9d3egIRQC6EIqwOvZeRToTi+XE103QMrGsuOWOlollxS13XG9XVxyK3r17d2b557rREYoAdCEUYXXsvYp0JhbLstdN0DKxrLjljpaJZdmWO663qy8ORfFjKqludIQiAF0IRVgde68inYnFsux1E7RMLCtuuaNlYlm25Y7r7erzQpGUdKMjFAHoQij6I519VevEn//5n1PpW4F//dd/PT14/du//dvxUSzl7//+70/Xx//+7/8eH8VS/vRP//RkXdAysbz/+7//O903/vZv//b4KGpJhaKSbnSEovmpPvW73/3upH7FKLLYgqZD0cePHw937949/aH85ptv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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## Point Chirality Example\n", "\n", "For the demonstration of how to work with these molecules, the following structure will be used to illustrate how point chirality is maintained. In addition, different functional groups are parsed into their expanded equivalent. Note: all structures should interpreted chemically, and all labels underneath the molecule should be BOLDED and NOT interpreted chemically!\n", "\n", "![Point_Chirality.PNG](attachment:Point_Chirality.PNG)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ "
\n", "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "", "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Molecule(name='high_complexity_1', formula='C47 F3 N3 O10')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The molecules can be accessed as the\n", "mol = cdxf[\"high_complexity_1\"]\n", "mol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When chirality is detected, the parser rotates groups of atoms out of the 2D plane of the paper, much like a chemist's intuition would. The structure upon initial parsing does not have have hydrogens. These can be added via the method `add_implicit_hydrogens()`. This will not optimize the `Molecule` but gives a reasonable starting point." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ "
\n", "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "", "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Molecule(name='high_complexity_1', formula='C47 H56 F3 N3 O10')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Adds implicit hydrogens to Molecule\n", "mol.add_implicit_hydrogens()\n", "mol" ] }, { "attachments": { "Taxadiene.PNG": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAFSCAYAAAAZ7RPiAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACY3SURBVHhe7d0/yBzHHcZxl+mUSqRwYQxCgbhw8YJDEHqDSYxNmqgIuHQQwSldiODOlUiRQhAUQqoUCqgMKkJKY6cwBEFK81bqlHQpVKR8w3O+3+vfOzszO7u3f2Z2vx8YpPdub29vb3ee3ZnZvdcuAQAIEA4AgA7CAQDQQTgAADoIBwBAB+EAAOggHAAAHYQDAKCDcAAAdBAOAIAOwgEA0EE4AAA6CAcAQAfhAADoIBywms8///zy8ePHx7+Qc3FxcVhXVvQ3MCfCAatQ5fbaa68dCtK0nu7cuXO1rny5d+/e5cuXL49TAtNiz8TifDCoIO7Vq1fX1tPDhw8PZw0PHjy4euzWrVuH6YCpsWdiUWpK8hWeCuIUBFo/OnMIA8AHrKYDpsaeiUWo+eP+/ftXFZqaROz/iLPmJAVqzJMnT67WJTA19kwswo6C1Qzy/PnzQyEc8rTOVFL9CrYOCQfMgT0Ti3j27NmhGMLhdBa4OiMDpsaeiVUQDqdRH4TOwrT+Us1OwCnYM7EKwuE0NmKJJiXMhT0TqyAcxrNgYBgr5sSeiVUQDuNYMGgkE1dJY07smVgF4TCMzhBsaGvsugdgauyZWAXhUM5f8KYzB4IBS2DPxCoIhzI+GHTRG7AU9kysgnDo54PBXyMCLIE9E6sgHPrZLUbUx2BXS6cKMDX2TKyCcMjzZw0lBZgaWxVWofsFcdSb5tdPSQGmRjgAADoIBwBAB+EAAOggHAAAHYQDAKCDcAAAdBAOAAZ59OjR5d///nd+ZGjjCAcAg7zxxhudi/B+/OMfX77//vuXn3322SE8FBxff/318RVoEeEAYJBYOOTKb3/72+Mr0RLCAcAg3/ve96IhkCo0P7WJcAAwSCwAcuV///vf8ZVoCeEAYJBYAKTK22+/fXwVWkM4ACims4BYCKTKJ598cnwlWkM4ACj24sWLaAikytOnT4+vRGsIBwDFhoaDpkebCAcAxYaEg0Y1oV2EA4BiGpYaC4JY+fnPf358FVpEOAAoNiQcdKU02kU4ACg2JBy++uqr46vQIsIBQLE///nP0SAIy3e+8x0ufmsc4QCgWGk46EZ8aBvhAKBYaThw8Vv7CAdU7Ve/+tWhiSJWAW2tnJ+fH34noWa6w2ps2cPy17/+9fgKtIpwQLU++uijQ0Vz9+7dTuWzxXL79u1DENYcEPq9htiyh+Xf//738RVoFeGAKlkwqKjS9BXPFstbb7119f+aA6IkHPR7D2gf4YDq+GBQ0Z09v/jii8Mwyq2WP/3pT9c+c60Bob4Ev5yxou8P7SMcUJVYMPz3v/89PrttYWdvjQERfj+xwsVv20A4oBp7DgZTe0CUhMO//vWv49RoGeGAKhAM36o5IHS/JL9sYdGyYhsIB6yOYOiqNSB0cZtfrrBw8dt2EA5YFcGQFgbEd7/73dWbbPrCQaOZsA2EA1ZDMPSrLSB++MMfXluesHDx23YQDlgFwVCupoDQNQx+WcLCd7gdhAMWRzAMV0tA5MJB32ML/vOf/xz/hxzCAYsiGMarISD0059+GXzRd1szbWe6iE/bnJrH+L2JPMIBiyEYTrd2QPj3DouWrVZ//OMfr4JN250t84cffsh9oBIIByyCYJjOmgHh3zcsa/WD5OjswIeBSvi31p/uNsuPE11HOGB2BMP01goI/56+6P1rorMBnRXElvU3v/nN5fe///3O4+pPYbTVtwgHzIpgmM/SAfHixYtr7+eLrpyugY7+dRagiwbDZdQ1Gl9//fVxym9+m0LrLDZdjWdBSyMcMBuCYX5LBkQuHGq4+E1H/bHRVLkzAp1h/PrXv+68RkWP77k/gnDALAiG5SwVELlw0G3H16Kzgffff7+zTFoPpX0JWl+xq781j73eZZZwwOQIhuUtERAKAP8evqzRmattKvX7EmOP+lNnH+qjqPH3NeZEOGBS4c5KMCxn7oBIhYO+46X5oam+6PqFUz+zgk7NZLF+C52h+H6LLSMcMJnwJyQJhuXNGRCpcNABwVJiQ1NVFBRPnz49TjWN3Ignfeatb9uEAyZBMNRjroBQ5evna0XvN7dURa2je217czZrKZBiNxzUetUZzFYRDjhZGAxqs93zKI8axALi1OaQcJ5W1FE9l9zQ1KWvblY4xpqydCC0Zof8XAgHnCQWDHNWFigXVuanfjexcFBlOZdU5/Ca90XS2fCnn34aDStd67GlbZ9wwGgEQ/2mDAgN6fTzUpnj4rfU0FQFUS3NOFqHsZ9MVWgoPLbQpEo4YBSCoR1TBUT4natMeQ2AKtTY0NSaK1w1J6U6yLXeW0Y4YDCCoT1TBEQsHKZqa9cZgfpFwvm30lSTWv6Wbw1OOGAQgqFdpwZEeFSvI/pTRwmljrxb7ORNnfmotHhrcMIBxQiG9p0SEOGV7zoqHis1NHULw0NTfSYKU+1Da1xNPgbhgCIEw3aMDYgwHMZc/Ja7+nhrF5bpdhuxW4PPccHeHAgH9CIYtmdMQIRH+kN/+yA1NHXrt6Ro9dbghAOyCIbtGhoQ4V1LS9vQVfHH7ni6p5vZaV21dmvwVcNBqbnlI4bWEQzbNyQgfAWv6fqkOmh1FL3X22CrzkvdGrz09uJLWTUcNCJBK0UbKOpCMOxHaUD4+wupiSknNbRz7z+gY1JNbHpsaHPdXFYLh3CDVLsjG00dCIb9KQkIX5mljvxTQ1Nrb19fQ65zvoZ+mFXCQSsldgMrPba3H9SoDcGwX30B4cMhrOh1YBcbmqrX1HIkXKvUulNZcwTXKuGQulDEiobMbWlIWysIBuQCwsJBR7omdfRbYxt67XK3Bl+jj2bxcNCGFjuNCos2xFYvO28RwQCTCgj7W01Ekmo311EwTcTjpW4NvvTorsXDIXYnw1zRDbc4+pgXwYBQLCDsoO7jjz+Ojrhp+T5CtVHLSerW4OqPWGL/XDQclHrhBy0p6uBiyOs8CAakhAFxdnZ2qKxu3rx57fFWrvhtkfbFtW4Nvlg46Og/NoqhtGhlqA0T01CH4i9+8YvLN99882odEwwI+YC4e/fu5fn5+dXf2id1cMGZ/fxSo8B+8IMfXF5cXBynmtZi4RD7oZAxRaeutGeOp1DwRyJan7dv3yYYkKSAUBD85Cc/uaqgtA2xHy7Prh/R96GgvnHjxmx3r10kHLQRxTpYxhYunBsuDAUrCgb9+5e//OU4JdDl+xj+8Ic/HB/FGtSU5Jv2mg6HVLvZqUXzZMhrXioUVN59992r/7d+m2TMy4cDB2brs+9CpelwMOpUDm/7e2rhwrm4XChoR9cG5a83UdsxkEI41MW+C5VNhIPRmYQqJrWb+Q95SlHo0DFWFgrGX5Wpe94AKYRDXey7UNlUOBj1ReiINXaDrjFFF4nsdZz1kFAwfofvu5Ea9o1wqIt9FyqbDAejI36NZpqq01rjf/diTCgYjVDy0wIphENd7LtQ2XQ4eNrwfKU1tmiI5pYvnMt18veFgvHNehqiCKQQDnWx70JlN+FgdN+WUy6aU1Hlt7UL5xQKqU59BWLphqJRXv61CmQghXCoi993dxcORh/cb5hjyhZ+KyIXCgrRobdF1vzC+QAphENd/H6723Awubb1ktLqhXNTh4LRBhXOj2tGkEI41MXvt7sPB5OrLEuKXttCJThXKBjdKC2cr94TiCEc6uL3W8IhoGYiXSsxZhhszRfOzR0KJnavq7k2MrSPcKjLEvtt8w3NOgvQtRJjhsEqXGq5cG6pUDAa7hu+z9Tvge0gHOri91vCoYddKzF0GOzaF84tHQom9p7s9EghHOri91vCYQBtvKr0/QrsK0sPeV0rFIzf2a1wfyWkEA518fst4TCCKliN/fcrMleWuHBu7VAweq/w/fd0ZTmGIRzq4vdbwuEEWnm61sGv0FTRhXNz3L66llAwsT4aLR8QQzjUxe+3hMMEdK2EvxNprkx14VxtoWBiy6PPDMQQDnXx+y3hMCFV2LpFdd8twzVMdmzlXWsoiJYttlxqVgNiCIe6+P2WcJiBzgzUzt53rYQq+dIL53KhoE7yNUPBaHRWbPm4vxJSCIe6+P2WcJiRKn6NVspdK6Hncl9CLhRU6da0Q+kCwNhy6kwKiCEc6uL3W8JhAbpWQp3RuWsldKbhL5xrKRSMlim2vCq1XBSIuhAOdfH7LOGwMO0AseGeKmoe+tvf/tZcKBhdzxBbbhWFHRAiHOri91nCYSXqI/A7hpXz8/POY7WHglFnfLjsVjSiCwgRDnXx+yzhsDJ9Af6W4R988MHV/1sJBZO79flcGxraRjjUZYl9lnAY6B//+Mfl66+/fvhSzs7OmtxRcleNs+MjhnCoi99nCYdKqNnFvhSNYGpRrsNdNy8EQoRDXfw+SzhUwg8DbfWisdzFf9x8DzGEQ138Pks4VEJDXe1LUdt9a3RNh9+wwqIRWECIcKiL32cJh0r4YaAa9dMa3XXWb1hhaTHwMD/CoS5+nyUcKuGvbVj6NyCmoA3Jb1hhUSVQu+fPn18rL1++PD5T7tWrV9fmcXFxcXwGMYRDXfw+SzhUovWdRMvsN6yw6AK/2oXLfOfOneMz5R4+fHhtHvfu3Ts+gxjCoS5+2yUcKuF/YW6uL2VOOtvxG1ZYWhiBFVvuoWcPt27duvZ6wiGPcKiL33YJh0r4kT5z/2rcHHRvKL9hxUrtYsv85MmT47P91IQUvp5wyCMc6uK3XcKhAuFInxZvUpe6H5QvU/zI0ZxsOVWh2/+HNC1Zk5I/eyAc8giHuth3oUI4VMCP9NFvQLTI7+SpUvsZkS2nKvQHDx5c/V3atGSh4PsdCIc8wqEu9l2oEA4V8BfAtdBxG+P7TFKl9r4UW05V6FpW+7ukaUkjk2x6///ScFAA7XGEE+FQF/suVAiHCminsC+k1d9b7vvVO5WnT58ep66TLadV6PZ3SdOSnWnorKE0HDTs9fHjx51ObCual6bZMsKhLn77Ixwq4C+Aa/FKYvWR+I0qVWrf+W05rUIf0rRk0+movyQcNJ1Cx6bLlS2fSRAOdfHbHeFQAd+Z2+I9iPRDPn6jSpXaP5stp1XopU1LNp3OAKQvHHQ2YM/7omlVYmcSWw0IwqEufpsjHCqgpiT7QnSPpdZ89dVX1zaqVPnkk0+Or6iTLaev0O2xXNOSb1KSvnDwZyQqz549Oz7zLc3Dn1nE5rMFhENd7LtQIRwq4Dtz1TndGv2qnd+oUqX2JjNbTl8RlzQt2fN2dJ8LB83DnvOvidEZhj+L2OLZA+FQF/suVAiHCvjO3BZ/TtPfUTZXVBHUzJbTV+h9TUs66tdz1qQkuXDQPOw5dUb3sfmXTt8awqEu9l2oEA4rCy+Aq/1CsRjfoZ4rb7/99vEVdbLlDCv01ONy//79w3M+OHLh4M9E9BpNmys+TPReW0M41MW+CxXCYWX+AjjdQqNFJVdHq+iX4mpmy5mr0P3QUt+x7JucVKnb4+G89Lc9N7TEwql1hENd/PZGOKzMN1vUXnmm6Lca/EaVK2vRiKo+toxhJey/I995bE0+YWd1aTjodfq7tFiH95YQDnWx70KFcFiZdgj7Mmpvk0/Rz5r6jSpXlrpvlJrrdNGdzmp0R9iS4LVlVEUcsud8006sSUlKw0HT7R3hUBf7LlQIh5X59voPP/zw+GhbVPH6jSpXSo7gx1Jnvm4dngqrvve26WLhEDYtpZqUJBcO/r5LYajsEeFQF/suVAiHleknQe3L0G2vW+Q3qL6iayKmorMQf3YQez9f+iofmy4WDmHTknUUx6bNhYMffaQRTr4PI0bPa34qfVdpt4hwqIt9FyqEw8r8BXCPHj06PtoOja7yG1RfOfU6DnXgaz359ZYqCgydjWmo7Sl9DsaeV3OSXaDm+yBMLhz8GYeK5pMKCD3uL4SLvVfrhoaDDghaHNHXCvsuVAiHlWl4p30Ztd+YLkZNOX6D6itDjw5VGegiO51h9TVfabSXOscVHmOuF7H5pMIhvLJZJVax58JB/PBUK3bDPhXtlL75ScVfR7ElQ8NB362uC2rxd9Zb4Lc5wmFl/gK4KZtcluKbW0pKyU495OxAlYv6baZYdzbPVDiEnzV13UFfOEgsaHKFeyt9c5bqfzFRdxZo8Y4CNbN1q0I4rCi8m+mcnbVz0Q7tP0NfifWrDDk70JmW5qFKQa+bkr1HqkIXvyypZp6ScJDYGURY9PqtBoMMCQd957Fbw+sgovYfkmqFX6+Ew4r8BXAqLdKZgP8MfcXur1R6dqCjQ4WGwkPDU+ekilgldz2BbmFh06X6ClSZl8xLNA+FjM4k7DUqep8th4IZ2qykswf1I/ltxIpu7Dj3NrJ1fn0SDivyzRTqPG2Rdki/QeXKzZs3Lz/44IPs2YGeU4CooqDjcfuGhoNRM2JsyLL2oxbvbFwLvy4JhxX5Jhlt6C1KHcX58uabb14bdeOLmgnUiawdmqaB/RkbDkaDOGLDmNX8OFfltmV+HRIOK/JNMqogW+R37rBoB33nnXeuPaYORTUl6bO3eAdaTEdNQNruX3/99cN2ou1izMAC9T1pUILvrLai+bfYl7c0fRfqy7t79+7hDF/rjnBYkb8ATv9vUaqJ6L333juEw/n5+eXZ2dlh5+VIDkaVkQ3jvnHjxrVtR2ejY5oUFQIKAz8vFYWGtr+pBzBshc7a/dmXvg8d9H3xxRfHKaZFOBTwG3Kr47Zjo0d0FBgexY1pMsA2+WCwEgbEKRW6DkLC+auoAmzxWqK5pNaTXUcyV5gSDgX8F9Ni5amNx29UKmoi0I6uDSzc8AgIxIJBAxDU3xQbuaYKXSPVxgiPiK2of6/Fa4qmkhvxpRaMuQeCEA4F/IbbYpOLTuP9hqWjvbfeeuvwfwVBrCIgIPYrFQyegiDWVKlmjjF9VHrP1Ii6sc1Xrcr1zYxdv2MQDj3Co+4WR+oo0PxnsBFJ2tAMAQEpCQajfUPNGrEmy7FHtqkzk7mbUGqRGtV1ypnZWIRDj/Cou8WNUxucLb8Fg45KwtEhBMS+DQkGTyGg6fzrVE6p0HWVtS6sDOeps5WlK8kl6Gwgdj3IKX06pyIcevijbm3sLdIVzlr+27dvX52qpjrWCYh9GhsMXuqCt1PurZQ6M1myeWVOClY/GtKXtZvTCIceqhjty9JG3iIdeajzWZ3Q+hyqBHIIiH2ZIhi8VNOImovGNMvmKtBWb8WRa5KrpSOecOihL9C+NG3cLdKObhe56cyh5IiLgNiHqYPBqPLTxVqxTtWxFbq2W50xhPNTBauz41akmswUqDUN4SUcevgRFFPsNGv4+OOPrz6DziJKERDbNlcweKkL3lShj723kvocYmcmpzRfLSHV2b5mv0IO4dDDb9hDKtZa6GjLjt608wzdAAmIbVoiGLzUhVx6bMzwcG3H2h9jZyaqgMPBFmvSum5xmC7h0MN3sLV2F0ntQH6HHNuOSUBsy9LB4NkvxPn3Vhl7byVVrLELxRQaatbSZ12T6oya+xVyCIce/vS15lPWGB1Z2bKfek8oAmIb1gwGo2WIHUlbhT6meSU1Ukr77xoHdakzpbWWZwzCoYf/YlsaOqf2TTvl1gY5RXsmAdG2GoLBS7XBa3sd2zGr7dEf0FnR517iSD3Vx1LLmcwQhEOGvmj/BdfaNhjjj6KmPOMhINpUWzB4qVtxjG160WdNjZSaq40/1wcytslsbYRDhr8ATl96K/zwW+0MUyMg2lJzMBhVrqlx/2Mr9NxR/JRnEanrOrTOx3S214JwyPC3ndCRTQvC5qS5znYIiDa0EAyettfYBW8KDYXHmOZRVdD+uoKpmllr6+eYGuGQ4Y/A/U3qauY31rkrawKibq0Fg5eqeE+5t5KNlDr1QjMFmNZjuGw6KGutXyGHcMjwIyrmaJ6Z2hpXcxMQdWo5GLxUk83YeyudUnHnmr5a7VfIIRwy/PhpHRHUTBumNSfp3yU3VAKiLlsJBpPr7FUT1CkVfqlUp3ntV2WfgnDI8Ke1td+7xd9zZo1lJSDqsLVg8FIdzDqSn2ubTw23nfM9a0E4ZPgjhVPbKeekzi9bTgXaWgiIdW05GLzUBWZTHsVrXaZueaHH9fzWEQ4ZfoP48ssvj4/WJWxOWvtCPQJiHXsJBi91awod6euIfyzruJ56vq0hHBJU6d68efPy/Pz88K/OImq8Qto3J9VyY0ACYll7DAajz567FYeeLxUOebWy5X6FHMIhQZ1g4b3jtcHV1Lzkm5O0AU8xdnsqBMQy9hwMXu5WHH3XHKzRl9ECwqFH7KikhpFLGmvtR28scd+YoQiIeREMXTrCj40q0noKr1bW+kvdZmMv/Qo5hEMBnS2EG5CONNbcePxR0ql3XJ0TATEPgiEtdz2C3Yojd/3EnvoVcgiHQupvCI9I1JSzxoakytWWYapbAcyJgJgWwVAmdSuOcN2paN8ee+X1VhEOA2inDPshdHSy5EalDd4fEbXSUTZlQGheaiJouYwd3EAwDBfeiuPs7Ozq/9qXxt6zaesIhxFi/RBLjRTyzUkt3NLDmyogVLn6ebRYdJAxVGz9aXugYiujpqR333338saNG5fvvPPO5S9/+cvDwRbiCIeR1uiHCJuTWtywpwiIPYYDwTAN3zSs7QhphMMJluyHCJuTWm6zPzUg9hYOBMN0CIdyhMOJVGmHtxaeox/C3wRQFUPrpjiD2AOCYVqEQznCYQLaUWOjIqbqh1ATls1TTVlL3nF1TgREHsEwPcKhHOEwIV2JOXU/hM5M/HjsrV2xSUDEEQzzIBzKEQ4T07C58OKaU/ohfHPSmndcnRMBcR3BMB/CoRzhMINUP8TQjTFsTqrxxn9TISC+QTDMi3AoRzjMJNUPUdosFDYn1XLH1TntPSAIhvkRDuUIh5nF+iHUVNS3w+uqV5teFcZeKoi9BgTBsAzCoRzhsICwH6Lv9tq6JYZNq1LjHVfnFFaUCtf33nvvcG3AVkt4y2iCYR6EQznCYSG+HyK3Uapi9EGiW3XsiT6/zhR+9rOfXf7oRz86/NjST3/606v1sdWiWzrYGSbBMB/CoRzhsCDt8H0Xx/nmJG3Ie6gkLBBiP7iicvfu3ejjWysKQoJhXoRDOcKhImFz0pZ/mrAvEKyoeel3v/vdoUN+6+X3v/89wTAzwqEc4VCJsDlpi7dhHhIIGtW1lSvBUQ/CoRzhUAnfnKSQUB/FFpQGgjrpdV99AgFzIhzKEQ4V0EbqK0pd/NayIYGg5hR+lhFLIRzKEQ4rUxuz32DVIdkiAgEtIBzKEQ4r81dRayhjS81JBAJaQziUIxxWFDYn6Wrq2pUGgnbCTz/9lEBAVQiHcoTDSsLmpL47rqrDeq3wGBIIumhvyzcIRNsIh3KEw0rC5qTcEba/O6tet8RYeAIBW0Q4lCMcVqB7JfkKVu3xKQoCtdn76XWWMUffBIGArSMcyhEOCwsre13w1XcmoLOKMCC0kU9ROZcGgq690FkLgYCWEQ7lCIeFqZPWV7qld1xVJR5W4GqOGnNNxNBAYCfCVhAO5QiHBYXNSWPuuKomKD+P0vkQCADhMAThsJCwOUkb6diOZd3ZVT87avNS0W8CKAA8AgG4jnAoRzgsJGxOOvWOq7F+CP39z3/+sygQFC4aHssOgj0hHMptKhzu3bt3rQJUGeri4uLkecTothg2v6nuuKozAz9fFZ1B+L99sUDo+00JYKsIh3KbD4ehG8DDhw8785iKKmWNTpp6GKr6HGxZz87Ori07gQB8i3Aot/lwePDgwfHZMrdu3erMowUataTRSzdv3iQQgATCodxmw+HOnTtX/y8Va1Ia8vq16RoEAgFIIxzKbTYcnjx5MngjsCYlnW3Ya1UAbAPhUG6z4fDy5cur/5c2LVmTkjYae60KgG0gHMptNhxkSNOSBYICQux1fa99/vz5IXzCvor79++z8QGVIRzKbTochjQtWVOSmpbEXqcS8+rVq07zU6xomTQtgPURDuU2HQ5DmpZsOnVK+79VYvxZSV/RtAQEsD7Codymw0FKmpa0keh5a1ISe03sdY8fP772vILHQkUUSrFpAKyLcCi3+XAoaVoKm5TEXqPi6QzAP/fs2bPjM13h0FiFBoD1EA7lNh8OfU1LvrL3R//2mIqnMLDHS84G/BmEggrAegiHcpsPB8k1LVllr2k8mz58jb+9hkYq9dE0Nj1NS8C6CIdyuwgH37Tkzw5EQ071eHhUb9OreP49hha9FsB6CIdyuwgH37Tk+xV8k1LYH2CPq3iEA9AuwqHcLsJBrGnJj0hKNSmJzSecl3+PkmYlAPUgHMrtJhxiTUupJiWxaVU8G9mkkhupBKA+hEO53YRD2LTk/w6blMSeU/F8yNBMBLSFcCi3m3AQ37RklbzOHmJsPuG8fKio9I1A8mcasTMUAMshHMrtKhz8Ub+VVNOQnybkh7Oq6H39hqaObv3tl0eFW2gA6yIcyu0qHMKjfpVUhe2nCek1/tqJkkL/BLA+wqHcrsJBfKWealISmyY1LwWEdWj3FYIBqAPhUG534eCblnKVtk2Tm5ekfs9By6L3oikJqAfhUG5T4QAAOYRDOcIBwG4QDuUIBwC7QTiUIxwA7AbhUI5wALAbhEM5wgHAbhAO5QgHALvx6NGjy88+++xQXrx4cXwUMYQDAKCDcAAAdBAOAIAOwgEA0EE4AAA6CAcAQAfhAADoIBwAAB2EAwCgg3AAAHQQDgCADsIBANBBOAAAOggHAEAH4QAA6CAcAAAdhAMAoINwAAB0EA4AgA7CAQDQQTgAADoIBwBAB+EAAOggHAAAHYQDAKCDcAAAdBAOAIAOwgEA0EE4AAA6CAcAQAfhAADoIBwAAB2EAwCgg3AAAHQQDgCADsIBANBBOAAAOggHAEAH4QAA6CAcAAAdhAMAoINwAAB0EA4AgA7CAQDQQTgAADoIBwBAB+EAAOggHAAAHYQDAKCDcAAAdBAOAIAOwgEA0EE4AAA6CAcAQAfhAADoIBywuFevXh3/B0/r5fnz59dKuK5evnzZmQaYA+GARX3++eeXr73GZhejil7rxpew8n/8+HFnGmAObFlYhI6A79+/T4WWQTigJmxZmF2s0kNXSTg8e/bs8t69e9cKMAf2UsyOo90yJeEALIW9FLMjHMoQDqgJeylmc3FxcajcHjx4EK30rOTYPKxotE6On9ZKypBpJTaaaAw/Hz8aSX/H1pM3drSSf13fOjThug9HTvnnw+dK+PWgeaEuhANmo/bwsLKLlZBGNN25cyc6rRUFTqyS853eVnTmEoqdzei1IVVgsXDzRcuqvoA+qc+l9WQVbficHvOGnIVp2TX9rVu3Oq/RY3ouV6mH35+FQGwZVLT+Sip5ravU95v6XrE8wgGzGRMOfRVxWMLKSJVXrDL006nyCZ/Xa8KKUq8Jp8sVLXtKyeeKTTM2HLTssfUQFlXSqQo9/P6ePHnSG9oqqflp/ZZuEwpSrItwwGwePnx4qAxilZQet2J0RBlO56dNPReKHYH76WLzCithiS23Kke9PlVJxuajSjU2rc0r9pyVMeGgSjicRiX1frFglNyy5ZZdj8ek3js1n1TIYBmEA2ZXerQbVhL621da+n+s2ShGwRROp0o6FkCaNhQLmPBoNjaNPquXqqh9pa9pUmcWY8IhNi9f0erMKQy32DpIVdrhsseCMmwaiq133xQXWweaL9ZDOGB2peEgqlRUaaiiiLU92xXWvoQVqKiyKWlWSR01G81byx9W+iasGFWherGzhtjySmx5h4ZDrMks9n4Ki3C6cD3EwiE2r5LvJPxssfUZ+85oXloP4YDZDQmHPqXhILEKMCyp15bqC4fwTCd3NFwSJH3rMpyHKtuUcNnDijgWDjGx9eyXO/Z8LPglPOOLndFgGYQDZndKOKhisTOJ2JG1Sq6Cj723ldjRa46ObPVeel2qySUMh7ACzlV2mrefVmVoOMSaZjSPWAmXLVwf4WcMP5vnp1PxTUaxJqXY8qiEy597T8yLcMDs+iq0kCqTWN9CqqhSyQkrQZXcEbWnI1xV6KlgCktYmYXP5wJJnyOcPvxsfesyrNCHlHDZw3nlKmo/nYr/nLFlHlKwDtY8ZlcaDjpLiFXkvsQq6THhoJJq2jBjKjXC4ZviP+eY9egL1sGax+z6KjQTq8T1mF6v9nBr1gmnyYVDrmLSvFNifRsqavZQu76CTPoq0DDMfKUZmisc9FhJCZu89Fg4nxQ/nYr/nLFl9u/bV7AOwgGz66vQJFYZ+3ZrMyQcYh2hYUlV1mFQ6e/YqCZVXn66sDLre94r6WzvW5dhh+4pleuQZffTqfj1GvtcqB/fEmZXEg4l00iqczMmdiYSa5ayswAvnCYVIuH8wgo09rliISNhZ6zK0HCIVcSp9+szVTjo/cPntZyoG+GA2ZVU/LFpwkpblUxpn0NsfmoO0rTh47HmpXCa2H2XYkNPwwo0dt2BQiAUCz2VoeEg4fOx95O+PpepwkFiQ3pjodW3TFgO4YDZxSpRq6itEkk1AanS1HSxeVgJK9DYvHzFFja9qPRVZip6TO+lo97UaKpYBRo7I9B0mo/mF1seK+FnKwmH2LrS8tr7aZ36il/Pab5hZe2nUYl9NuOnUwnXZ+w7UUDY96tl8+tJ76V5xM7qsAzCAbNLVfxWrAIMK6PSosrQpM4ufCVTMo2WKXy+tIT0frEmrlgJl2tMOEgskHIldiQ/ZThI6uwoVwiH9RAOWESusrIKUJVTX0DoCDOsIH2lVXJWILHKP2xe6qvMdMStZQ4fDyt06ftsCgVVhOE0Y8NBYtPGir6bMBgkXBa/nkN+OpXYOhd9f+G0saL3IhjWRThgMaroVBFpx1dR5aqj/rBisiYGm07/V0Vt01kl6oueU3t1+LhV4DGqwMLp9T6e5qll9NPodb7iUiD55/2ZTEjrwE9vn82E8worSE3rn1fJ0WfXa/z6VNH76PFcG3+4LPo7xU+nEq7HkL7jcP5aRq07QqEOhAMAoINwAAB0EA4AgA7CAQDQQTgAADoIBwBAB+EAAOggHAAAHYQDAKCDcAAAdBAOAIAOwgEA0EE4AAA6CAcAQAfhAADoIBwAAB2EAwCgg3AAAAQuL/8PoTOhaGuap/sAAAAASUVORK5CYII=" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## Reading Label Example\n", "\n", "One of the most useful features of the CDXML parser is that unique labels can be maintained from the original `CDXML` file. For those that are unaware, it is possible to add your own labels by selecting an atom in the ChemDraw file, clicking the `'` key, then typing your unique label. `molli` maintains whatever label is used and assigns it to the atom once it is read in. This can be leveraged in downstream tasks if certain atoms are important, especially if lists of atoms get instantiated arbitrarily.\n", "\n", "An example of this will be shown with the molecule below\n", "\n", "![Taxadiene.PNG](attachment:Taxadiene.PNG)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ "
\n", "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "", "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Molecule(name='taxadiene', formula='C20 H32')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#This accesses the molecule\n", "m = cdxf[\"taxadiene\"]\n", "\n", "#This adds implicit hydrogens\n", "m.add_implicit_hydrogens()\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This illustrates that regardless of the `Molecule` instantiation, the labels are maintained." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label='2', formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label='1', formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=C, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n", "Atom(element=H, isotope=None, label=None, formal_charge=0, formal_spin=0)\n" ] } ], "source": [ "#This prints the full atom, including the labels\n", "for atom in m.atoms:\n", " print(atom)\n" ] }, { "attachments": { "AxialChirality.PNG": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## Axial Chirality Example\n", "\n", "The `molli` CDXML parser also has the ability to parse axial chirality. It moves groups of atoms based on the boldness of certain bonds. This has been tested on a variety of structures, and upon force-field optimization, the structures never invert. Here is an example of an axial chiral structure that can be parsed.\n", "\n", "![AxialChirality.PNG](attachment:AxialChirality.PNG)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ "
\n", "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "", "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Molecule(name='r_binol', formula='C20 O2')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This accesses the molecule\n", "m = cdxf['r_binol']\n", "m" ] }, { "attachments": { "Taniaphos.PNG": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## Planar Chirality Example\n", "\n", "`molli` has the ability to parse multi-attachment points and actually maintain a significant amount of information about bonding information that is often difficult to access with the `CDXML` format. The first example illustrates maintaining both planar AND point chirality at the same time.\n", "\n", "![Taniaphos.PNG](attachment:Taniaphos.PNG)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ "
\n", "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "", "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Molecule(name='Taniaphos', formula='C43 Fe1 N1 P2')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#This accesses the structure\n", "m = cdxf['Taniaphos']\n", "m" ] }, { "attachments": { "BrettPhos.PNG": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "Here is an additional structure showing the ability to parse pi-allyl complexes and even non-traditional bonds via a Pd-allyl BrettPhos structure:\n", "\n", "![BrettPhos.PNG](attachment:BrettPhos.PNG)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ "
\n", "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "", "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Molecule(name='BrettPhos', formula='C44 O2 P1 Pd1')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#This accesses the structure\n", "m = cdxf['BrettPhos']\n", "m" ] }, { "attachments": { "Charge.PNG": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "`molli` can understand not only the charges of certain structures, but also the multiplicity of varying structures. This results in a very robust parsing algorithm, where even upon adding implicit hydrogens, it does not add too many. A simple example can be shown utilizing N-Oxide compounds\n", "\n", "## Charge Example \n", "\n", "![Charge.PNG](attachment:Charge.PNG)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The formal charge on Nitrogen = 1\n", "The formal charge on Oxygen = -1\n", "The charge of the Molecule = 0\n" ] }, { "data": { "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ "
\n", "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "", "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Molecule(name='a3', formula='C6 H11 N1 O1')" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This reads the cdxml file\n", "cdxf2 = ml.CDXMLFile(ml.files.charges_mult_cdxml)\n", "\n", "#This accesses the structure\n", "m = cdxf2['a3']\n", "\n", "#This finds the nitrogen\n", "nitrogen = m.get_atom(ml.Element.N)\n", "\n", "#This finds the oxygen\n", "oxygen = m.get_atom(ml.Element.O)\n", "\n", "print(f'The formal charge on Nitrogen = {nitrogen.formal_charge}')\n", "print(f'The formal charge on Oxygen = {oxygen.formal_charge}')\n", "print(f'The charge of the Molecule = {m.charge}')\n", "\n", "\n", "#This adds the implicit hydrogens\n", "m.add_implicit_hydrogens()\n", "m" ] }, { "attachments": { "chargemult.PNG": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## Charge and Multiplicity Example \n", "\n", "Since `molli` can parse the electrons drawn on an atom, it can perceive if hydrogens are necessary upon addition of implicit hydrogens\n", "\n", "![chargemult.PNG](attachment:chargemult.PNG)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The formal charge on Nitrogen = 1, The formal spin on Nitrogen = 1\n", "The charge of the Molecule = 1, The multiplicity of the Molecule = 2 \n" ] }, { "data": { "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ "
\n", "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "", "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Molecule(name='a6', formula='C8 H19 N1')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#This accesses the structure\n", "m = cdxf2['a6']\n", "\n", "#This finds the nitrogen\n", "nitrogen = m.get_atom(ml.Element.N)\n", "print(f'The formal charge on Nitrogen = {nitrogen.formal_charge}, The formal spin on Nitrogen = {nitrogen.formal_spin}')\n", "print(f'The charge of the Molecule = {m.charge}, The multiplicity of the Molecule = {m.mult} ')\n", "\n", "#This adds the implicit hydrogens\n", "m.add_implicit_hydrogens()\n", "m" ] }, { "attachments": { "Mult.PNG": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGwAAABWCAYAAAAqh3MGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAUHSURBVHhe7ZstT+xAFEBX8i/AkCCRCAQSCQ5JguEHIHAogsSQ8AMQSIJCIjEkSILCAQ6BQPbllN59N5d29m0fdOfO3pPcvH0z3W07Z746HUZV4IoQ5owQ5owQ5owQ5owQ5owQ5owQ5oyihJ2fn1cLCwvV2tpa9fn52aT+5fT0tNrd3a2en5+bFH8UJWx1dbUajUZ1XF1dNalf8H/J29raalL9UZQwWhBCVlZWvrWwh4eHsbD9/f0m1R/FjWHv7+/Np+/c3t7W3WbqmNyJSYczQpgzQpgzQpgzQpgzQpgzihb29vZWR0kUK4znrcXFxTr4XArFCePhmCUqVjNeX1/r4DNp5HmnGGGI2dnZqTY2NuplKAtp5LGOyLFecS+MNcOjo6NqaWmpury8bFK7YRGYY/lO24p+7rgWhqA+hT+t5JxwKezu7q5+50UX+D/dm3Sj/Ba/6QFXwn6rgH+qAgyBC2F0YScnJ7/ehfXtYoekt7CXl5fq+vq6Ojs7qyM1ZZZj+sAkgReSh4eHgxSiHt/sW+tJ3N/fj+/14uKiLqM2pNy68lNMLezj46M6ODgYv73Vsby8XF+0RfKnQU/DZ7EHg66Rc3c9JmiorNy7LguJ4+Pjusw029vbdV5bWU1iqlLkxOvr6+OLQZzUKH3BT09PzTe+kPR/gYLK6UHXPohbaC1yf5SNlIeu1Ht7e83RXwwmjBNzIi7G1hqQi0SeRi48hYxTdH85LiVxTUxKNFRMube2wtf5iBUGEUZ/y0msDItcjG5lctFd3Nzc1LWYccrTfgupoFqGBSkco1vZIMJo5pyEwTQFYu1gyveINhgnNjc3q8fHxybFD6n70lgxgwiT7rDXSRI35nVTp3R3FP60DCJMTtKHlDCvUNjcEz3PtISwGZC9MBlge52kQGEyCaPwp2UQYUw2OMmkSQfPLTyP6JlTicLgX+8LQcwB5FFoEGF6Wt/2DCbI5GQehEmvk6rEMjnRj0ODCAO5QF1bNNIKCZ0vaaUhlZhoW5UhX1aG9Fg3mDAkyAUSCORCWC/TS1P24iW9ROT5lNBLU9LTSLpmMGFArZET2kBaW02T/FLRPYsNKrXtjQYVJtA3c6FSo9pECXJMySCFMpB7pWyo3G0wvnNMV36Kcqt9oYQwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ4QwZ8y1MN6a85q+z6v6WTGXwng9b/deEG37L3Jj7oTJVr2uYIdTztLmShhdnxXEDia9RY/IecNQEcJoETIWpcYj2xXKHx3yfdnwSSAxV1wLo8C79ki2jUdamJWSyssJt8L0NmmCFmLl2R23esOnzWP3suSxazdX3ArTkwdECHYXrnR7YCXzG3Sh9jupTbGzxq0wWpOE7vr4rAvfjmkI1Pk2Un9gngNFTDoEZFHgWoAVRivTf6igg24yNWnJAdfCRBBdm57l6dACbJdI0ELttD7nVuZWmG1JXaGF6ZZlu1I96SByxaUw21JoIUzLRY7O08J0up1YTBr7csGlMDur0y0lVfA63a5mcJzOD2E/iH7IpXVpUpMOO85Jq+Q7dhzLFZfCbGuQ5yktUkJ3fXy2+W1hW19OuBQG+sHZBhMK+cxkQjNpssLv5oxbYUDhM/NDEP8ytjGG0dpIk3QLx3CsfJdArF4VyRXXwuaREOaMEOaMEOaMEOaMEOaMEOaMEOaKqvoDChdPhv+zDTkAAAAASUVORK5CYII=" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## Multiplicity Example\n", "\n", "![Mult.PNG](attachment:Mult.PNG)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The formal charge on Carbon = 0, The formal spin on Carbon = 2\n", "The charge of the Molecule = 0, The multiplicity of the Molecule = 3 \n" ] }, { "data": { "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ "
\n", "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "", "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Molecule(name='a8', formula='C1 Cl2')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#This accesses the structure\n", "m = cdxf2['a8']\n", "\n", "#This finds the nitrogen\n", "carbon = m.get_atom(ml.Element.C)\n", "print(f'The formal charge on Carbon = {carbon.formal_charge}, The formal spin on Carbon = {carbon.formal_spin}')\n", "print(f'The charge of the Molecule = {m.charge}, The multiplicity of the Molecule = {m.mult} ')\n", "\n", "#This adds the implicit hydrogens\n", "m.add_implicit_hydrogens()\n", "m" ] } ], "metadata": { "kernelspec": { "display_name": "dev-blake", "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.11.6" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }