Skip to content

Instantly share code, notes, and snippets.

@JanCBrammer
Last active May 20, 2024 18:56
Show Gist options
  • Save JanCBrammer/00e8b3fe4c555bfb3eae6db8dec71a98 to your computer and use it in GitHub Desktop.
Save JanCBrammer/00e8b3fe4c555bfb3eae6db8dec71a98 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import ctypes\n",
"import random\n",
"from rdkit import Chem # RDKit provides a Python wrapper around their C++ library.\n",
"from rdkit.Chem.Draw import IPythonConsole\n",
"from rdkit.Chem.Randomize import RandomizeMolBlock\n",
"from inchi_api import make_inchi_from_molfile_text # Our own Python wrapper around the InChI API.\n",
"from config import INCHI_LIB_PATH, INCHI_API_PARAMETERS\n",
"\n",
"inchi_lib = ctypes.CDLL(str(INCHI_LIB_PATH))\n",
"IPythonConsole.ipython_useSVG=True\n",
"IPythonConsole.drawOptions.addAtomIndices = True\n",
"random.seed(42)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We start by generating an InChI string for a structure that's known to fail the shuffle/permutation/invariance test.\n",
"For details have a look at Figure 7 in https://jcheminf.biomedcentral.com/articles/10.1186/s13321-021-00517-z#Sec9."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"molblock = \"\"\"\n",
" -OEChem-03072403132D\n",
"\n",
" 13 14 0 0 0 0 0 0 0999 V2000\n",
" 2.8660 1.5000 0.0000 O 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 4.6783 0.3047 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 4.6783 -1.3047 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 2.8660 -1.5000 0.0000 N 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 2.0000 -0.0000 0.0000 N 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 3.7320 -0.0000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 3.7320 -1.0000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 2.8660 0.5000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 5.2619 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 2.0000 -1.0000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 4.8709 0.8941 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 5.8819 -0.5000 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 1.4631 -1.3100 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 1 8 1 0 0 0 0\n",
" 2 6 1 0 0 0 0\n",
" 2 9 1 0 0 0 0\n",
" 2 11 1 0 0 0 0\n",
" 3 7 1 0 0 0 0\n",
" 3 9 2 0 0 0 0\n",
" 4 7 1 0 0 0 0\n",
" 4 10 1 0 0 0 0\n",
" 5 8 1 0 0 0 0\n",
" 5 10 1 0 0 0 0\n",
" 6 7 1 0 0 0 0\n",
" 6 8 1 0 0 0 0\n",
" 9 12 1 0 0 0 0\n",
" 10 13 1 0 0 0 0\n",
"M RAD 7 1 2 4 2 5 2 6 2 7 2 8 2 10 2\n",
"M END\n",
"\"\"\"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's permute the atom indices of the structure and verify the permutation by comparing the structure from before to after the permutation."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" -OEChem-03072403132D\n",
"\n",
" 13 14 0 0 0 0 0 0 0999 V2000\n",
" 2.8660 1.5000 0.0000 O 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 4.6783 0.3047 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 4.6783 -1.3047 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 2.8660 -1.5000 0.0000 N 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 2.0000 -0.0000 0.0000 N 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 3.7320 -0.0000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 3.7320 -1.0000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 2.8660 0.5000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 5.2619 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 2.0000 -1.0000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 4.8709 0.8941 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 5.8819 -0.5000 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 1.4631 -1.3100 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 1 8 1 0 0 0 0\n",
" 2 6 1 0 0 0 0\n",
" 2 9 1 0 0 0 0\n",
" 2 11 1 0 0 0 0\n",
" 3 7 1 0 0 0 0\n",
" 3 9 2 0 0 0 0\n",
" 4 7 1 0 0 0 0\n",
" 4 10 1 0 0 0 0\n",
" 5 8 1 0 0 0 0\n",
" 5 10 1 0 0 0 0\n",
" 6 7 1 0 0 0 0\n",
" 6 8 1 0 0 0 0\n",
" 9 12 1 0 0 0 0\n",
" 10 13 1 0 0 0 0\n",
"M RAD 7 1 2 4 2 5 2 6 2 7 2 8 2 10 2\n",
"M END\n",
"\n",
"\n",
" -OEChem-03072403132D\n",
"\n",
" 13 14 0 0 0 0 0 0 0999 V2000\n",
" 2.0000 -0.0000 0.0000 N 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 4.6783 0.3047 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 4.8709 0.8941 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 2.8660 0.5000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 2.0000 -1.0000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 5.8819 -0.5000 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 1.4631 -1.3100 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 3.7320 -0.0000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 3.7320 -1.0000 0.0000 C 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 4.6783 -1.3047 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 2.8660 -1.5000 0.0000 N 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 2.8660 1.5000 0.0000 O 0 4 0 0 0 0 0 0 0 0 0 0\n",
" 5.2619 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 12 4 1 0 0 0 0\n",
" 2 8 1 0 0 0 0\n",
" 2 13 1 0 0 0 0\n",
" 2 3 1 0 0 0 0\n",
" 10 9 1 0 0 0 0\n",
" 10 13 2 0 0 0 0\n",
" 11 9 1 0 0 0 0\n",
" 11 5 1 0 0 0 0\n",
" 1 4 1 0 0 0 0\n",
" 1 5 1 0 0 0 0\n",
" 8 9 1 0 0 0 0\n",
" 8 4 1 0 0 0 0\n",
" 13 6 1 0 0 0 0\n",
" 5 7 1 0 0 0 0\n",
"M END\n"
]
},
{
"data": {
"image/svg+xml": [
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:rdkit=\"http://www.rdkit.org/xml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" xml:space=\"preserve\" width=\"600px\" height=\"200px\" viewBox=\"0 0 600 200\">\n",
"<!-- END OF HEADER -->\n",
"<rect style=\"opacity:1.0;fill:#FFFFFF;stroke:none\" width=\"600.0\" height=\"200.0\" x=\"0.0\" y=\"0.0\"> </rect>\n",
"<path class=\"bond-0 atom-0 atom-7\" d=\"M 73.3,60.1 L 73.3,72.1\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-0 atom-0 atom-7\" d=\"M 73.3,72.1 L 73.3,84.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-1 atom-1 atom-5\" d=\"M 125.0,92.2 L 113.0,96.1\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-1 atom-1 atom-5\" d=\"M 113.0,96.1 L 101.0,100.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-2 atom-1 atom-8\" d=\"M 136.8,98.0 L 143.3,106.9\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-2 atom-1 atom-8\" d=\"M 143.3,106.9 L 149.8,115.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-3 atom-1 atom-10\" d=\"M 133.7,82.5 L 134.2,80.8\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-3 atom-1 atom-10\" d=\"M 134.2,80.8 L 134.8,79.2\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-4 atom-2 atom-6\" d=\"M 125.0,139.6 L 113.0,135.7\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-4 atom-2 atom-6\" d=\"M 113.0,135.7 L 101.0,131.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-5 atom-2 atom-8\" d=\"M 136.8,133.8 L 143.3,124.9\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-5 atom-2 atom-8\" d=\"M 143.3,124.9 L 149.8,115.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-5 atom-2 atom-8\" d=\"M 133.2,131.3 L 138.8,123.6\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-5 atom-2 atom-8\" d=\"M 138.8,123.6 L 144.3,115.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-6 atom-3 atom-6\" d=\"M 79.4,144.3 L 90.2,138.1\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-6 atom-3 atom-6\" d=\"M 90.2,138.1 L 101.0,131.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-7 atom-3 atom-9\" d=\"M 67.2,144.3 L 56.5,138.1\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-7 atom-3 atom-9\" d=\"M 56.5,138.1 L 45.7,131.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-8 atom-4 atom-7\" d=\"M 51.8,96.4 L 62.6,90.2\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-8 atom-4 atom-7\" d=\"M 62.6,90.2 L 73.3,84.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-9 atom-4 atom-9\" d=\"M 45.7,107.7 L 45.7,119.8\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-9 atom-4 atom-9\" d=\"M 45.7,119.8 L 45.7,131.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-10 atom-5 atom-6\" d=\"M 101.0,100.0 L 101.0,131.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-11 atom-5 atom-7\" d=\"M 101.0,100.0 L 73.3,84.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-12 atom-8 atom-11\" d=\"M 149.8,115.9 L 163.3,115.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-13 atom-9 atom-12\" d=\"M 45.7,131.9 L 34.8,138.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"atom-0\" d=\"M 67.1 52.1 Q 67.1 48.9, 68.7 47.1 Q 70.3 45.2, 73.3 45.2 Q 76.3 45.2, 77.9 47.1 Q 79.5 48.9, 79.5 52.1 Q 79.5 55.4, 77.9 57.3 Q 76.3 59.2, 73.3 59.2 Q 70.3 59.2, 68.7 57.3 Q 67.1 55.4, 67.1 52.1 M 73.3 57.6 Q 75.4 57.6, 76.5 56.2 Q 77.6 54.8, 77.6 52.1 Q 77.6 49.5, 76.5 48.1 Q 75.4 46.8, 73.3 46.8 Q 71.3 46.8, 70.1 48.1 Q 69.0 49.4, 69.0 52.1 Q 69.0 54.9, 70.1 56.2 Q 71.3 57.6, 73.3 57.6 \" fill=\"#FF0000\"/>\n",
"<path class=\"atom-1\" d=\"M 128.2 83.5 L 132.6 90.6 Q 133.0 91.3, 133.7 92.6 Q 134.5 93.9, 134.5 94.0 L 134.5 83.5 L 136.3 83.5 L 136.3 97.0 L 134.4 97.0 L 129.7 89.2 Q 129.1 88.2, 128.5 87.2 Q 127.9 86.1, 127.8 85.8 L 127.8 97.0 L 126.0 97.0 L 126.0 83.5 L 128.2 83.5 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-2\" d=\"M 128.2 134.8 L 132.6 142.0 Q 133.0 142.7, 133.7 144.0 Q 134.5 145.3, 134.5 145.3 L 134.5 134.8 L 136.3 134.8 L 136.3 148.4 L 134.4 148.4 L 129.7 140.5 Q 129.1 139.6, 128.5 138.5 Q 127.9 137.5, 127.8 137.2 L 127.8 148.4 L 126.0 148.4 L 126.0 134.8 L 128.2 134.8 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-3\" d=\"M 70.3 141.0 L 74.8 148.2 Q 75.2 148.9, 75.9 150.2 Q 76.6 151.5, 76.7 151.6 L 76.7 141.0 L 78.5 141.0 L 78.5 154.6 L 76.6 154.6 L 71.8 146.7 Q 71.3 145.8, 70.7 144.8 Q 70.1 143.7, 69.9 143.4 L 69.9 154.6 L 68.2 154.6 L 68.2 141.0 L 70.3 141.0 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-4\" d=\"M 42.7 93.2 L 47.1 100.4 Q 47.6 101.1, 48.3 102.3 Q 49.0 103.6, 49.0 103.7 L 49.0 93.2 L 50.8 93.2 L 50.8 106.7 L 49.0 106.7 L 44.2 98.9 Q 43.7 98.0, 43.1 96.9 Q 42.5 95.9, 42.3 95.5 L 42.3 106.7 L 40.6 106.7 L 40.6 93.2 L 42.7 93.2 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-10\" d=\"M 132.0 64.6 L 133.8 64.6 L 133.8 70.4 L 140.8 70.4 L 140.8 64.6 L 142.6 64.6 L 142.6 78.2 L 140.8 78.2 L 140.8 71.9 L 133.8 71.9 L 133.8 78.2 L 132.0 78.2 L 132.0 64.6 \" fill=\"#000000\"/>\n",
"<path class=\"atom-11\" d=\"M 164.3 109.1 L 166.1 109.1 L 166.1 114.9 L 173.0 114.9 L 173.0 109.1 L 174.9 109.1 L 174.9 122.7 L 173.0 122.7 L 173.0 116.4 L 166.1 116.4 L 166.1 122.7 L 164.3 122.7 L 164.3 109.1 \" fill=\"#000000\"/>\n",
"<path class=\"atom-12\" d=\"M 23.3 135.0 L 25.1 135.0 L 25.1 140.7 L 32.0 140.7 L 32.0 135.0 L 33.9 135.0 L 33.9 148.5 L 32.0 148.5 L 32.0 142.3 L 25.1 142.3 L 25.1 148.5 L 23.3 148.5 L 23.3 135.0 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 73.3 39.6 Q 72.1 39.6, 71.5 38.7 Q 70.8 37.8, 70.8 36.2 Q 70.8 34.5, 71.5 33.6 Q 72.1 32.7, 73.3 32.7 Q 74.6 32.7, 75.2 33.6 Q 75.8 34.5, 75.8 36.2 Q 75.8 37.8, 75.2 38.7 Q 74.6 39.6, 73.3 39.6 M 73.3 38.9 Q 74.1 38.9, 74.5 38.2 Q 74.8 37.5, 74.8 36.2 Q 74.8 34.8, 74.5 34.2 Q 74.1 33.5, 73.3 33.5 Q 72.6 33.5, 72.2 34.2 Q 71.8 34.8, 71.8 36.2 Q 71.8 37.5, 72.2 38.2 Q 72.6 38.9, 73.3 38.9 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 124.5 108.0 L 126.0 108.0 L 126.0 103.0 L 124.4 103.5 L 124.1 102.9 L 126.2 102.0 L 126.9 102.1 L 126.9 108.0 L 128.2 108.0 L 128.2 108.8 L 124.5 108.8 L 124.5 108.0 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 133.8 154.7 Q 134.1 154.0, 134.7 153.7 Q 135.3 153.3, 136.1 153.3 Q 137.1 153.3, 137.7 153.9 Q 138.3 154.4, 138.3 155.4 Q 138.3 156.4, 137.5 157.4 Q 136.8 158.3, 135.3 159.4 L 138.4 159.4 L 138.4 160.2 L 133.8 160.2 L 133.8 159.5 Q 135.1 158.6, 135.8 158.0 Q 136.6 157.3, 137.0 156.7 Q 137.3 156.1, 137.3 155.5 Q 137.3 154.8, 137.0 154.4 Q 136.7 154.1, 136.1 154.1 Q 135.6 154.1, 135.2 154.3 Q 134.8 154.5, 134.6 155.0 L 133.8 154.7 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 74.3 163.6 Q 75.0 163.8, 75.3 164.2 Q 75.6 164.7, 75.6 165.3 Q 75.6 165.9, 75.3 166.4 Q 75.0 166.8, 74.5 167.1 Q 74.0 167.3, 73.3 167.3 Q 72.6 167.3, 72.0 167.0 Q 71.5 166.8, 71.0 166.3 L 71.6 165.7 Q 72.0 166.2, 72.4 166.4 Q 72.7 166.5, 73.3 166.5 Q 73.9 166.5, 74.3 166.2 Q 74.6 165.9, 74.6 165.3 Q 74.6 164.6, 74.3 164.3 Q 73.9 164.0, 73.0 164.0 L 72.5 164.0 L 72.5 163.3 L 73.0 163.3 Q 73.7 163.3, 74.1 163.0 Q 74.5 162.7, 74.5 162.1 Q 74.5 161.6, 74.2 161.4 Q 73.8 161.1, 73.3 161.1 Q 72.7 161.1, 72.4 161.3 Q 72.0 161.5, 71.8 162.0 L 71.1 161.7 Q 71.3 161.1, 71.9 160.7 Q 72.5 160.3, 73.3 160.3 Q 74.3 160.3, 74.9 160.8 Q 75.5 161.3, 75.5 162.1 Q 75.5 162.6, 75.2 163.0 Q 74.9 163.4, 74.3 163.6 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 33.7 93.0 L 34.5 93.0 L 34.5 93.8 L 33.7 93.8 L 33.7 95.4 L 32.8 95.4 L 32.8 93.8 L 29.3 93.8 L 29.3 93.2 L 32.2 88.6 L 33.7 88.6 L 33.7 93.0 M 30.4 93.0 L 32.8 93.0 L 32.8 89.2 L 30.4 93.0 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 107.6 103.8 Q 108.2 103.8, 108.7 104.1 Q 109.1 104.3, 109.4 104.8 Q 109.7 105.3, 109.7 105.9 Q 109.7 106.6, 109.4 107.1 Q 109.0 107.6, 108.5 107.9 Q 107.9 108.1, 107.3 108.1 Q 106.7 108.1, 106.1 107.9 Q 105.5 107.7, 105.1 107.2 L 105.7 106.6 Q 106.0 107.0, 106.4 107.2 Q 106.9 107.3, 107.3 107.3 Q 107.9 107.3, 108.3 107.0 Q 108.7 106.6, 108.7 105.9 Q 108.7 105.2, 108.3 104.9 Q 107.9 104.5, 107.2 104.5 Q 106.7 104.5, 106.0 104.8 L 105.5 104.5 L 105.8 101.3 L 109.3 101.3 L 109.2 102.0 L 106.6 102.0 L 106.4 104.0 Q 107.0 103.8, 107.6 103.8 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 102.1 139.0 Q 102.7 139.0, 103.2 139.2 Q 103.6 139.5, 103.9 140.0 Q 104.1 140.4, 104.1 141.0 Q 104.1 141.7, 103.9 142.2 Q 103.6 142.7, 103.0 143.0 Q 102.5 143.3, 101.9 143.3 Q 100.7 143.3, 100.1 142.5 Q 99.4 141.7, 99.4 140.0 Q 99.4 138.2, 100.2 137.3 Q 101.0 136.4, 102.4 136.4 Q 102.8 136.4, 103.2 136.5 Q 103.5 136.6, 103.9 136.8 L 103.5 137.4 Q 103.0 137.1, 102.4 137.1 Q 101.5 137.1, 101.0 137.8 Q 100.5 138.4, 100.4 139.6 Q 100.8 139.3, 101.2 139.2 Q 101.6 139.0, 102.1 139.0 M 101.9 142.5 Q 102.2 142.5, 102.5 142.3 Q 102.8 142.1, 103.0 141.8 Q 103.2 141.5, 103.2 141.0 Q 103.2 140.4, 102.9 140.1 Q 102.5 139.8, 101.9 139.8 Q 101.5 139.8, 101.1 139.9 Q 100.7 140.1, 100.4 140.4 Q 100.5 141.5, 100.8 142.0 Q 101.2 142.5, 101.9 142.5 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 67.7 77.4 L 64.2 77.4 L 64.2 76.6 L 68.7 76.6 L 68.7 77.3 L 65.9 83.4 L 65.0 83.4 L 67.7 77.4 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 154.8 108.8 Q 155.4 109.1, 155.8 109.5 Q 156.2 109.9, 156.2 110.6 Q 156.2 111.1, 155.9 111.6 Q 155.6 112.0, 155.0 112.3 Q 154.5 112.5, 153.8 112.5 Q 152.7 112.5, 152.0 112.0 Q 151.4 111.5, 151.4 110.6 Q 151.4 110.0, 151.7 109.6 Q 151.9 109.2, 152.5 108.9 Q 152.1 108.6, 151.9 108.3 Q 151.6 107.9, 151.6 107.3 Q 151.6 106.5, 152.2 106.0 Q 152.8 105.6, 153.8 105.6 Q 154.7 105.6, 155.3 106.0 Q 155.9 106.5, 155.9 107.3 Q 155.9 107.8, 155.6 108.2 Q 155.4 108.5, 154.8 108.8 M 153.8 106.3 Q 153.2 106.3, 152.9 106.6 Q 152.6 106.8, 152.6 107.3 Q 152.6 107.7, 152.8 107.9 Q 153.0 108.1, 153.3 108.3 Q 153.6 108.4, 154.2 108.6 Q 154.6 108.3, 154.8 108.0 Q 154.9 107.7, 154.9 107.3 Q 154.9 106.8, 154.6 106.6 Q 154.3 106.3, 153.8 106.3 M 153.8 111.8 Q 154.4 111.8, 154.8 111.5 Q 155.2 111.1, 155.2 110.6 Q 155.2 110.2, 155.0 110.0 Q 154.8 109.7, 154.5 109.6 Q 154.2 109.5, 153.7 109.3 L 153.2 109.2 Q 152.7 109.4, 152.5 109.8 Q 152.3 110.1, 152.3 110.6 Q 152.3 111.1, 152.7 111.5 Q 153.1 111.8, 153.8 111.8 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 52.5 124.4 Q 53.7 124.4, 54.3 125.3 Q 54.9 126.1, 54.9 127.7 Q 54.9 129.5, 54.2 130.4 Q 53.4 131.4, 52.0 131.4 Q 51.6 131.4, 51.2 131.3 Q 50.9 131.2, 50.5 131.0 L 50.9 130.3 Q 51.4 130.6, 52.0 130.6 Q 52.9 130.6, 53.4 130.0 Q 53.9 129.4, 54.0 128.1 Q 53.6 128.4, 53.2 128.6 Q 52.8 128.8, 52.3 128.8 Q 51.7 128.8, 51.2 128.5 Q 50.8 128.2, 50.5 127.8 Q 50.2 127.3, 50.2 126.7 Q 50.2 126.0, 50.5 125.5 Q 50.8 125.0, 51.4 124.7 Q 51.9 124.4, 52.5 124.4 M 51.2 126.7 Q 51.2 127.3, 51.5 127.6 Q 51.9 128.0, 52.5 128.0 Q 52.9 128.0, 53.3 127.8 Q 53.7 127.7, 54.0 127.4 Q 53.9 126.2, 53.6 125.7 Q 53.2 125.2, 52.5 125.2 Q 52.2 125.2, 51.8 125.4 Q 51.6 125.6, 51.4 125.9 Q 51.2 126.3, 51.2 126.7 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 137.7 58.9 L 139.2 58.9 L 139.2 53.9 L 137.5 54.4 L 137.3 53.8 L 139.4 52.9 L 140.1 53.0 L 140.1 58.9 L 141.4 58.9 L 141.4 59.7 L 137.7 59.7 L 137.7 58.9 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 144.7 59.8 Q 143.5 59.8, 142.9 58.8 Q 142.2 57.9, 142.2 56.3 Q 142.2 54.7, 142.9 53.7 Q 143.5 52.8, 144.7 52.8 Q 146.0 52.8, 146.6 53.7 Q 147.2 54.7, 147.2 56.3 Q 147.2 57.9, 146.6 58.8 Q 146.0 59.8, 144.7 59.8 M 144.7 59.0 Q 145.5 59.0, 145.9 58.3 Q 146.2 57.6, 146.2 56.3 Q 146.2 55.0, 145.9 54.3 Q 145.5 53.6, 144.7 53.6 Q 144.0 53.6, 143.6 54.3 Q 143.2 55.0, 143.2 56.3 Q 143.2 57.6, 143.6 58.3 Q 144.0 59.0, 144.7 59.0 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 181.4 118.5 L 182.9 118.5 L 182.9 113.5 L 181.2 114.0 L 181.0 113.4 L 183.1 112.5 L 183.8 112.6 L 183.8 118.5 L 185.1 118.5 L 185.1 119.3 L 181.4 119.3 L 181.4 118.5 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 186.3 118.5 L 187.8 118.5 L 187.8 113.5 L 186.1 114.0 L 185.9 113.4 L 188.0 112.5 L 188.7 112.6 L 188.7 118.5 L 190.0 118.5 L 190.0 119.3 L 186.3 119.3 L 186.3 118.5 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 10.4 152.4 L 11.9 152.4 L 11.9 147.3 L 10.2 147.8 L 10.0 147.3 L 12.1 146.3 L 12.8 146.5 L 12.8 152.4 L 14.1 152.4 L 14.1 153.2 L 10.4 153.2 L 10.4 152.4 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 14.9 147.7 Q 15.2 147.0, 15.8 146.7 Q 16.4 146.3, 17.2 146.3 Q 18.2 146.3, 18.8 146.9 Q 19.4 147.4, 19.4 148.4 Q 19.4 149.4, 18.6 150.3 Q 17.9 151.3, 16.4 152.4 L 19.5 152.4 L 19.5 153.2 L 14.9 153.2 L 14.9 152.5 Q 16.2 151.6, 16.9 150.9 Q 17.7 150.3, 18.1 149.7 Q 18.4 149.1, 18.4 148.4 Q 18.4 147.8, 18.1 147.4 Q 17.8 147.1, 17.2 147.1 Q 16.7 147.1, 16.3 147.3 Q 15.9 147.5, 15.7 148.0 L 14.9 147.7 \" fill=\"#000000\"/>\n",
"<path class=\"atom-0\" d=\"M 83.4,52.1 L 83.4,52.2 L 83.4,52.3 L 83.3,52.3 L 83.3,52.4 L 83.3,52.5 L 83.2,52.6 L 83.2,52.6 L 83.2,52.7 L 83.1,52.8 L 83.0,52.8 L 83.0,52.9 L 82.9,52.9 L 82.8,53.0 L 82.8,53.0 L 82.7,53.0 L 82.6,53.0 L 82.5,53.0 L 82.4,53.0 L 82.4,53.0 L 82.3,53.0 L 82.2,53.0 L 82.1,53.0 L 82.0,53.0 L 82.0,52.9 L 81.9,52.9 L 81.8,52.8 L 81.8,52.8 L 81.7,52.7 L 81.7,52.7 L 81.6,52.6 L 81.6,52.5 L 81.5,52.5 L 81.5,52.4 L 81.5,52.3 L 81.5,52.2 L 81.5,52.1 L 81.5,52.0 L 81.5,52.0 L 81.5,51.9 L 81.5,51.8 L 81.5,51.7 L 81.6,51.7 L 81.6,51.6 L 81.7,51.5 L 81.7,51.5 L 81.8,51.4 L 81.8,51.3 L 81.9,51.3 L 82.0,51.2 L 82.0,51.2 L 82.1,51.2 L 82.2,51.2 L 82.3,51.1 L 82.4,51.1 L 82.4,51.1 L 82.5,51.1 L 82.6,51.2 L 82.7,51.2 L 82.8,51.2 L 82.8,51.2 L 82.9,51.3 L 83.0,51.3 L 83.0,51.4 L 83.1,51.4 L 83.2,51.5 L 83.2,51.5 L 83.2,51.6 L 83.3,51.7 L 83.3,51.8 L 83.3,51.8 L 83.4,51.9 L 83.4,52.0 L 83.4,52.1 L 82.4,52.1 Z\" style=\"fill:#000000;fill-rule:evenodd;fill-opacity:1;stroke:#000000;stroke-width:0.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
"<path class=\"atom-3\" d=\"M 82.3,147.8 L 82.3,147.9 L 82.3,148.0 L 82.3,148.1 L 82.2,148.1 L 82.2,148.2 L 82.2,148.3 L 82.1,148.4 L 82.1,148.4 L 82.0,148.5 L 82.0,148.5 L 81.9,148.6 L 81.8,148.6 L 81.8,148.7 L 81.7,148.7 L 81.6,148.7 L 81.5,148.8 L 81.4,148.8 L 81.4,148.8 L 81.3,148.8 L 81.2,148.8 L 81.1,148.7 L 81.0,148.7 L 81.0,148.7 L 80.9,148.7 L 80.8,148.6 L 80.7,148.6 L 80.7,148.5 L 80.6,148.5 L 80.6,148.4 L 80.5,148.3 L 80.5,148.2 L 80.4,148.2 L 80.4,148.1 L 80.4,148.0 L 80.4,147.9 L 80.4,147.9 L 80.4,147.8 L 80.4,147.7 L 80.4,147.6 L 80.4,147.5 L 80.4,147.5 L 80.5,147.4 L 80.5,147.3 L 80.6,147.2 L 80.6,147.2 L 80.7,147.1 L 80.7,147.1 L 80.8,147.0 L 80.9,147.0 L 81.0,146.9 L 81.0,146.9 L 81.1,146.9 L 81.2,146.9 L 81.3,146.9 L 81.4,146.9 L 81.4,146.9 L 81.5,146.9 L 81.6,146.9 L 81.7,146.9 L 81.8,147.0 L 81.8,147.0 L 81.9,147.0 L 82.0,147.1 L 82.0,147.1 L 82.1,147.2 L 82.1,147.3 L 82.2,147.3 L 82.2,147.4 L 82.2,147.5 L 82.3,147.6 L 82.3,147.6 L 82.3,147.7 L 82.3,147.8 L 81.3,147.8 Z\" style=\"fill:#000000;fill-rule:evenodd;fill-opacity:1;stroke:#000000;stroke-width:0.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
"<path class=\"atom-4\" d=\"M 38.6,100.0 L 38.6,100.0 L 38.6,100.1 L 38.6,100.2 L 38.6,100.3 L 38.5,100.4 L 38.5,100.4 L 38.5,100.5 L 38.4,100.6 L 38.4,100.6 L 38.3,100.7 L 38.2,100.7 L 38.2,100.8 L 38.1,100.8 L 38.0,100.8 L 37.9,100.9 L 37.9,100.9 L 37.8,100.9 L 37.7,100.9 L 37.6,100.9 L 37.5,100.9 L 37.5,100.9 L 37.4,100.9 L 37.3,100.8 L 37.2,100.8 L 37.2,100.8 L 37.1,100.7 L 37.0,100.7 L 37.0,100.6 L 36.9,100.5 L 36.9,100.5 L 36.8,100.4 L 36.8,100.3 L 36.8,100.2 L 36.7,100.2 L 36.7,100.1 L 36.7,100.0 L 36.7,99.9 L 36.7,99.8 L 36.7,99.7 L 36.8,99.7 L 36.8,99.6 L 36.8,99.5 L 36.9,99.4 L 36.9,99.4 L 37.0,99.3 L 37.0,99.3 L 37.1,99.2 L 37.2,99.2 L 37.2,99.1 L 37.3,99.1 L 37.4,99.0 L 37.5,99.0 L 37.5,99.0 L 37.6,99.0 L 37.7,99.0 L 37.8,99.0 L 37.9,99.0 L 37.9,99.0 L 38.0,99.1 L 38.1,99.1 L 38.2,99.1 L 38.2,99.2 L 38.3,99.2 L 38.4,99.3 L 38.4,99.3 L 38.5,99.4 L 38.5,99.5 L 38.5,99.6 L 38.6,99.6 L 38.6,99.7 L 38.6,99.8 L 38.6,99.9 L 38.6,100.0 L 37.7,100.0 Z\" style=\"fill:#000000;fill-rule:evenodd;fill-opacity:1;stroke:#000000;stroke-width:0.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
"<path class=\"atom-5\" d=\"M 96.2,100.0 L 96.2,100.0 L 96.2,100.1 L 96.1,100.2 L 96.1,100.3 L 96.1,100.4 L 96.0,100.4 L 96.0,100.5 L 96.0,100.6 L 95.9,100.6 L 95.8,100.7 L 95.8,100.7 L 95.7,100.8 L 95.6,100.8 L 95.6,100.8 L 95.5,100.9 L 95.4,100.9 L 95.3,100.9 L 95.2,100.9 L 95.2,100.9 L 95.1,100.9 L 95.0,100.9 L 94.9,100.9 L 94.8,100.8 L 94.8,100.8 L 94.7,100.8 L 94.6,100.7 L 94.6,100.7 L 94.5,100.6 L 94.4,100.5 L 94.4,100.5 L 94.4,100.4 L 94.3,100.3 L 94.3,100.2 L 94.3,100.2 L 94.3,100.1 L 94.3,100.0 L 94.3,99.9 L 94.3,99.8 L 94.3,99.7 L 94.3,99.7 L 94.3,99.6 L 94.4,99.5 L 94.4,99.4 L 94.4,99.4 L 94.5,99.3 L 94.6,99.3 L 94.6,99.2 L 94.7,99.2 L 94.8,99.1 L 94.8,99.1 L 94.9,99.0 L 95.0,99.0 L 95.1,99.0 L 95.2,99.0 L 95.2,99.0 L 95.3,99.0 L 95.4,99.0 L 95.5,99.0 L 95.6,99.1 L 95.6,99.1 L 95.7,99.1 L 95.8,99.2 L 95.8,99.2 L 95.9,99.3 L 96.0,99.3 L 96.0,99.4 L 96.0,99.5 L 96.1,99.6 L 96.1,99.6 L 96.1,99.7 L 96.2,99.8 L 96.2,99.9 L 96.2,100.0 L 95.2,100.0 Z\" style=\"fill:#000000;fill-rule:evenodd;fill-opacity:1;stroke:#000000;stroke-width:0.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
"<path class=\"atom-6\" d=\"M 96.2,131.9 L 96.2,131.9 L 96.2,132.0 L 96.1,132.1 L 96.1,132.2 L 96.1,132.3 L 96.0,132.3 L 96.0,132.4 L 96.0,132.5 L 95.9,132.5 L 95.8,132.6 L 95.8,132.6 L 95.7,132.7 L 95.6,132.7 L 95.6,132.8 L 95.5,132.8 L 95.4,132.8 L 95.3,132.8 L 95.2,132.8 L 95.2,132.8 L 95.1,132.8 L 95.0,132.8 L 94.9,132.8 L 94.8,132.7 L 94.8,132.7 L 94.7,132.7 L 94.6,132.6 L 94.6,132.6 L 94.5,132.5 L 94.4,132.4 L 94.4,132.4 L 94.4,132.3 L 94.3,132.2 L 94.3,132.1 L 94.3,132.1 L 94.3,132.0 L 94.3,131.9 L 94.3,131.8 L 94.3,131.7 L 94.3,131.7 L 94.3,131.6 L 94.3,131.5 L 94.4,131.4 L 94.4,131.4 L 94.4,131.3 L 94.5,131.2 L 94.6,131.2 L 94.6,131.1 L 94.7,131.1 L 94.8,131.0 L 94.8,131.0 L 94.9,131.0 L 95.0,130.9 L 95.1,130.9 L 95.2,130.9 L 95.2,130.9 L 95.3,130.9 L 95.4,130.9 L 95.5,130.9 L 95.6,131.0 L 95.6,131.0 L 95.7,131.0 L 95.8,131.1 L 95.8,131.1 L 95.9,131.2 L 96.0,131.3 L 96.0,131.3 L 96.0,131.4 L 96.1,131.5 L 96.1,131.5 L 96.1,131.6 L 96.2,131.7 L 96.2,131.8 L 96.2,131.9 L 95.2,131.9 Z\" style=\"fill:#000000;fill-rule:evenodd;fill-opacity:1;stroke:#000000;stroke-width:0.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
"<path class=\"atom-7\" d=\"M 74.3,88.3 L 74.3,88.4 L 74.3,88.5 L 74.2,88.6 L 74.2,88.6 L 74.2,88.7 L 74.2,88.8 L 74.1,88.8 L 74.1,88.9 L 74.0,89.0 L 73.9,89.0 L 73.9,89.1 L 73.8,89.1 L 73.7,89.2 L 73.7,89.2 L 73.6,89.2 L 73.5,89.2 L 73.4,89.3 L 73.3,89.3 L 73.3,89.3 L 73.2,89.3 L 73.1,89.2 L 73.0,89.2 L 72.9,89.2 L 72.9,89.1 L 72.8,89.1 L 72.7,89.1 L 72.7,89.0 L 72.6,88.9 L 72.6,88.9 L 72.5,88.8 L 72.5,88.7 L 72.4,88.7 L 72.4,88.6 L 72.4,88.5 L 72.4,88.4 L 72.4,88.3 L 72.4,88.3 L 72.4,88.2 L 72.4,88.1 L 72.4,88.0 L 72.4,87.9 L 72.5,87.9 L 72.5,87.8 L 72.6,87.7 L 72.6,87.7 L 72.7,87.6 L 72.7,87.6 L 72.8,87.5 L 72.9,87.5 L 72.9,87.4 L 73.0,87.4 L 73.1,87.4 L 73.2,87.4 L 73.3,87.4 L 73.3,87.3 L 73.4,87.4 L 73.5,87.4 L 73.6,87.4 L 73.7,87.4 L 73.7,87.4 L 73.8,87.5 L 73.9,87.5 L 73.9,87.6 L 74.0,87.6 L 74.1,87.7 L 74.1,87.8 L 74.2,87.8 L 74.2,87.9 L 74.2,88.0 L 74.2,88.1 L 74.3,88.1 L 74.3,88.2 L 74.3,88.3 L 73.3,88.3 Z\" style=\"fill:#000000;fill-rule:evenodd;fill-opacity:1;stroke:#000000;stroke-width:0.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
"<path class=\"atom-9\" d=\"M 40.9,131.9 L 40.9,131.9 L 40.9,132.0 L 40.9,132.1 L 40.8,132.2 L 40.8,132.3 L 40.8,132.3 L 40.7,132.4 L 40.7,132.5 L 40.6,132.5 L 40.6,132.6 L 40.5,132.6 L 40.4,132.7 L 40.4,132.7 L 40.3,132.8 L 40.2,132.8 L 40.1,132.8 L 40.1,132.8 L 40.0,132.8 L 39.9,132.8 L 39.8,132.8 L 39.7,132.8 L 39.6,132.8 L 39.6,132.7 L 39.5,132.7 L 39.4,132.7 L 39.4,132.6 L 39.3,132.6 L 39.2,132.5 L 39.2,132.4 L 39.1,132.4 L 39.1,132.3 L 39.1,132.2 L 39.0,132.1 L 39.0,132.1 L 39.0,132.0 L 39.0,131.9 L 39.0,131.8 L 39.0,131.7 L 39.0,131.7 L 39.0,131.6 L 39.1,131.5 L 39.1,131.4 L 39.1,131.4 L 39.2,131.3 L 39.2,131.2 L 39.3,131.2 L 39.4,131.1 L 39.4,131.1 L 39.5,131.0 L 39.6,131.0 L 39.6,131.0 L 39.7,130.9 L 39.8,130.9 L 39.9,130.9 L 40.0,130.9 L 40.1,130.9 L 40.1,130.9 L 40.2,130.9 L 40.3,131.0 L 40.4,131.0 L 40.4,131.0 L 40.5,131.1 L 40.6,131.1 L 40.6,131.2 L 40.7,131.3 L 40.7,131.3 L 40.8,131.4 L 40.8,131.5 L 40.8,131.5 L 40.9,131.6 L 40.9,131.7 L 40.9,131.8 L 40.9,131.9 L 39.9,131.9 Z\" style=\"fill:#000000;fill-rule:evenodd;fill-opacity:1;stroke:#000000;stroke-width:0.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n",
"<path class=\"bond-0 atom-11 atom-3\" d=\"M 273.2,59.0 L 273.2,70.9\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-0 atom-11 atom-3\" d=\"M 273.2,70.9 L 273.2,82.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-1 atom-1 atom-7\" d=\"M 324.9,91.1 L 312.9,95.0\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-1 atom-1 atom-7\" d=\"M 312.9,95.0 L 300.9,98.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-2 atom-1 atom-12\" d=\"M 336.7,96.9 L 343.2,105.8\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-2 atom-1 atom-12\" d=\"M 343.2,105.8 L 349.7,114.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-3 atom-1 atom-2\" d=\"M 333.6,81.4 L 334.1,79.7\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-3 atom-1 atom-2\" d=\"M 334.1,79.7 L 334.7,78.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-4 atom-9 atom-8\" d=\"M 324.9,138.5 L 312.9,134.6\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-4 atom-9 atom-8\" d=\"M 312.9,134.6 L 300.9,130.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-5 atom-9 atom-12\" d=\"M 336.7,132.7 L 343.2,123.8\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-5 atom-9 atom-12\" d=\"M 343.2,123.8 L 349.7,114.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-5 atom-9 atom-12\" d=\"M 333.1,130.1 L 338.7,122.5\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-5 atom-9 atom-12\" d=\"M 338.7,122.5 L 344.3,114.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-6 atom-10 atom-8\" d=\"M 279.3,143.2 L 290.1,137.0\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-6 atom-10 atom-8\" d=\"M 290.1,137.0 L 300.9,130.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-7 atom-10 atom-4\" d=\"M 267.1,143.2 L 256.4,137.0\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-7 atom-10 atom-4\" d=\"M 256.4,137.0 L 245.6,130.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-8 atom-0 atom-3\" d=\"M 251.7,95.3 L 262.5,89.1\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-8 atom-0 atom-3\" d=\"M 262.5,89.1 L 273.2,82.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-9 atom-0 atom-4\" d=\"M 245.6,106.6 L 245.6,118.7\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-9 atom-0 atom-4\" d=\"M 245.6,118.7 L 245.6,130.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-10 atom-7 atom-8\" d=\"M 300.9,98.8 L 300.9,130.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-11 atom-7 atom-3\" d=\"M 300.9,98.8 L 273.2,82.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-12 atom-12 atom-5\" d=\"M 349.7,114.8 L 363.2,114.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"bond-13 atom-4 atom-6\" d=\"M 245.6,130.7 L 234.7,137.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n",
"<path class=\"atom-0\" d=\"M 227.2 92.1 L 229.0 92.1 L 229.0 97.8 L 235.9 97.8 L 235.9 92.1 L 237.8 92.1 L 237.8 105.6 L 235.9 105.6 L 235.9 99.4 L 229.0 99.4 L 229.0 105.6 L 227.2 105.6 L 227.2 92.1 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-0\" d=\"M 242.6 92.1 L 247.0 99.2 Q 247.5 99.9, 248.2 101.2 Q 248.9 102.5, 248.9 102.6 L 248.9 92.1 L 250.7 92.1 L 250.7 105.6 L 248.9 105.6 L 244.1 97.8 Q 243.6 96.8, 243.0 95.8 Q 242.4 94.7, 242.2 94.4 L 242.2 105.6 L 240.5 105.6 L 240.5 92.1 L 242.6 92.1 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-1\" d=\"M 328.1 82.3 L 332.5 89.5 Q 332.9 90.2, 333.6 91.5 Q 334.4 92.8, 334.4 92.9 L 334.4 82.3 L 336.2 82.3 L 336.2 95.9 L 334.3 95.9 L 329.6 88.0 Q 329.0 87.1, 328.4 86.1 Q 327.8 85.0, 327.7 84.7 L 327.7 95.9 L 325.9 95.9 L 325.9 82.3 L 328.1 82.3 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-2\" d=\"M 331.9 63.5 L 333.7 63.5 L 333.7 69.3 L 340.7 69.3 L 340.7 63.5 L 342.5 63.5 L 342.5 77.1 L 340.7 77.1 L 340.7 70.8 L 333.7 70.8 L 333.7 77.1 L 331.9 77.1 L 331.9 63.5 \" fill=\"#000000\"/>\n",
"<path class=\"atom-5\" d=\"M 364.2 108.0 L 366.0 108.0 L 366.0 113.8 L 372.9 113.8 L 372.9 108.0 L 374.8 108.0 L 374.8 121.6 L 372.9 121.6 L 372.9 115.3 L 366.0 115.3 L 366.0 121.6 L 364.2 121.6 L 364.2 108.0 \" fill=\"#000000\"/>\n",
"<path class=\"atom-6\" d=\"M 223.2 133.9 L 225.0 133.9 L 225.0 139.6 L 231.9 139.6 L 231.9 133.9 L 233.8 133.9 L 233.8 147.4 L 231.9 147.4 L 231.9 141.2 L 225.0 141.2 L 225.0 147.4 L 223.2 147.4 L 223.2 133.9 \" fill=\"#000000\"/>\n",
"<path class=\"atom-9\" d=\"M 328.1 133.7 L 332.5 140.9 Q 332.9 141.6, 333.6 142.9 Q 334.4 144.1, 334.4 144.2 L 334.4 133.7 L 336.2 133.7 L 336.2 147.2 L 334.3 147.2 L 329.6 139.4 Q 329.0 138.5, 328.4 137.4 Q 327.8 136.4, 327.7 136.0 L 327.7 147.2 L 325.9 147.2 L 325.9 133.7 L 328.1 133.7 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-10\" d=\"M 270.2 139.9 L 274.7 147.1 Q 275.1 147.8, 275.8 149.1 Q 276.5 150.4, 276.6 150.5 L 276.6 139.9 L 278.4 139.9 L 278.4 153.5 L 276.5 153.5 L 271.7 145.6 Q 271.2 144.7, 270.6 143.7 Q 270.0 142.6, 269.8 142.3 L 269.8 153.5 L 268.1 153.5 L 268.1 139.9 L 270.2 139.9 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-10\" d=\"M 267.9 154.8 L 269.8 154.8 L 269.8 160.6 L 276.7 160.6 L 276.7 154.8 L 278.5 154.8 L 278.5 168.4 L 276.7 168.4 L 276.7 162.1 L 269.8 162.1 L 269.8 168.4 L 267.9 168.4 L 267.9 154.8 \" fill=\"#0000FF\"/>\n",
"<path class=\"atom-11\" d=\"M 267.0 51.0 Q 267.0 47.8, 268.6 45.9 Q 270.2 44.1, 273.2 44.1 Q 276.2 44.1, 277.8 45.9 Q 279.4 47.8, 279.4 51.0 Q 279.4 54.3, 277.8 56.2 Q 276.2 58.0, 273.2 58.0 Q 270.2 58.0, 268.6 56.2 Q 267.0 54.3, 267.0 51.0 M 273.2 56.5 Q 275.3 56.5, 276.4 55.1 Q 277.5 53.7, 277.5 51.0 Q 277.5 48.4, 276.4 47.0 Q 275.3 45.7, 273.2 45.7 Q 271.2 45.7, 270.0 47.0 Q 268.9 48.3, 268.9 51.0 Q 268.9 53.8, 270.0 55.1 Q 271.2 56.5, 273.2 56.5 \" fill=\"#FF0000\"/>\n",
"<path class=\"atom-11\" d=\"M 281.6 44.3 L 283.4 44.3 L 283.4 50.0 L 290.3 50.0 L 290.3 44.3 L 292.2 44.3 L 292.2 57.8 L 290.3 57.8 L 290.3 51.6 L 283.4 51.6 L 283.4 57.8 L 281.6 57.8 L 281.6 44.3 \" fill=\"#FF0000\"/>\n",
"<path class=\"note\" d=\"M 259.4 110.3 Q 258.2 110.3, 257.5 109.4 Q 256.9 108.5, 256.9 106.8 Q 256.9 105.2, 257.5 104.3 Q 258.2 103.4, 259.4 103.4 Q 260.7 103.4, 261.3 104.3 Q 261.9 105.2, 261.9 106.8 Q 261.9 108.5, 261.3 109.4 Q 260.7 110.3, 259.4 110.3 M 259.4 109.6 Q 260.1 109.6, 260.5 108.9 Q 260.9 108.2, 260.9 106.8 Q 260.9 105.5, 260.5 104.8 Q 260.1 104.2, 259.4 104.2 Q 258.7 104.2, 258.3 104.8 Q 257.9 105.5, 257.9 106.8 Q 257.9 108.2, 258.3 108.9 Q 258.7 109.6, 259.4 109.6 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 324.4 106.9 L 325.9 106.9 L 325.9 101.9 L 324.3 102.4 L 324.1 101.8 L 326.1 100.9 L 326.8 101.0 L 326.8 106.9 L 328.1 106.9 L 328.1 107.7 L 324.4 107.7 L 324.4 106.9 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 339.9 53.1 Q 340.1 52.4, 340.7 52.1 Q 341.3 51.7, 342.1 51.7 Q 343.2 51.7, 343.7 52.3 Q 344.3 52.8, 344.3 53.8 Q 344.3 54.8, 343.6 55.8 Q 342.8 56.7, 341.3 57.8 L 344.4 57.8 L 344.4 58.6 L 339.9 58.6 L 339.9 57.9 Q 341.1 57.0, 341.9 56.4 Q 342.6 55.7, 343.0 55.1 Q 343.4 54.5, 343.4 53.9 Q 343.4 53.2, 343.0 52.8 Q 342.7 52.5, 342.1 52.5 Q 341.6 52.5, 341.2 52.7 Q 340.9 52.9, 340.6 53.4 L 339.9 53.1 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 267.3 78.8 Q 268.0 78.9, 268.3 79.4 Q 268.6 79.8, 268.6 80.5 Q 268.6 81.0, 268.3 81.5 Q 268.0 81.9, 267.5 82.2 Q 267.0 82.4, 266.3 82.4 Q 265.6 82.4, 265.0 82.2 Q 264.5 81.9, 264.0 81.4 L 264.6 80.8 Q 265.0 81.3, 265.4 81.5 Q 265.7 81.7, 266.3 81.7 Q 266.9 81.7, 267.3 81.3 Q 267.6 81.0, 267.6 80.5 Q 267.6 79.8, 267.2 79.5 Q 266.9 79.1, 266.0 79.1 L 265.5 79.1 L 265.5 78.5 L 266.0 78.5 Q 266.7 78.4, 267.1 78.1 Q 267.5 77.8, 267.5 77.2 Q 267.5 76.8, 267.2 76.5 Q 266.8 76.2, 266.3 76.2 Q 265.7 76.2, 265.4 76.4 Q 265.0 76.6, 264.8 77.1 L 264.1 76.8 Q 264.3 76.2, 264.9 75.9 Q 265.5 75.5, 266.3 75.5 Q 267.3 75.5, 267.9 75.9 Q 268.5 76.4, 268.5 77.2 Q 268.5 77.7, 268.2 78.1 Q 267.9 78.5, 267.3 78.8 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 254.3 127.8 L 255.1 127.8 L 255.1 128.6 L 254.3 128.6 L 254.3 130.1 L 253.4 130.1 L 253.4 128.6 L 249.9 128.6 L 249.9 128.0 L 252.9 123.4 L 254.3 123.4 L 254.3 127.8 M 251.0 127.8 L 253.4 127.8 L 253.4 124.0 L 251.0 127.8 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 385.6 113.9 Q 386.2 113.9, 386.7 114.2 Q 387.1 114.4, 387.4 114.9 Q 387.7 115.4, 387.7 116.0 Q 387.7 116.7, 387.4 117.2 Q 387.0 117.7, 386.5 118.0 Q 385.9 118.3, 385.3 118.3 Q 384.7 118.3, 384.1 118.0 Q 383.5 117.8, 383.1 117.4 L 383.7 116.8 Q 384.0 117.1, 384.4 117.3 Q 384.9 117.5, 385.3 117.5 Q 385.9 117.5, 386.3 117.1 Q 386.7 116.7, 386.7 116.1 Q 386.7 115.3, 386.3 115.0 Q 385.9 114.7, 385.3 114.7 Q 384.7 114.7, 384.0 114.9 L 383.5 114.7 L 383.8 111.4 L 387.3 111.4 L 387.2 112.2 L 384.6 112.2 L 384.4 114.2 Q 385.0 113.9, 385.6 113.9 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 214.9 147.8 Q 215.5 147.8, 216.0 148.1 Q 216.5 148.3, 216.7 148.8 Q 217.0 149.3, 217.0 149.9 Q 217.0 150.5, 216.7 151.0 Q 216.4 151.5, 215.9 151.8 Q 215.4 152.1, 214.7 152.1 Q 213.5 152.1, 212.9 151.3 Q 212.3 150.5, 212.3 148.9 Q 212.3 147.1, 213.0 146.1 Q 213.8 145.2, 215.2 145.2 Q 215.7 145.2, 216.0 145.3 Q 216.4 145.4, 216.7 145.6 L 216.4 146.2 Q 215.9 146.0, 215.3 146.0 Q 214.3 146.0, 213.8 146.6 Q 213.3 147.2, 213.3 148.5 Q 213.6 148.1, 214.0 148.0 Q 214.5 147.8, 214.9 147.8 M 214.7 151.3 Q 215.1 151.3, 215.4 151.1 Q 215.7 150.9, 215.9 150.6 Q 216.0 150.3, 216.0 149.9 Q 216.0 149.3, 215.7 148.9 Q 215.4 148.6, 214.8 148.6 Q 214.4 148.6, 214.0 148.7 Q 213.6 148.9, 213.3 149.2 Q 213.3 150.3, 213.7 150.8 Q 214.0 151.3, 214.7 151.3 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 308.6 100.9 L 305.1 100.9 L 305.1 100.1 L 309.6 100.1 L 309.6 100.8 L 306.8 106.9 L 305.9 106.9 L 308.6 100.9 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 302.8 138.5 Q 303.4 138.8, 303.7 139.2 Q 304.1 139.6, 304.1 140.2 Q 304.1 140.8, 303.8 141.3 Q 303.5 141.7, 303.0 142.0 Q 302.4 142.2, 301.7 142.2 Q 300.6 142.2, 300.0 141.7 Q 299.3 141.2, 299.3 140.2 Q 299.3 139.7, 299.6 139.3 Q 299.9 138.9, 300.5 138.5 Q 300.0 138.3, 299.8 137.9 Q 299.6 137.6, 299.6 137.0 Q 299.6 136.2, 300.1 135.7 Q 300.7 135.3, 301.7 135.3 Q 302.7 135.3, 303.3 135.7 Q 303.8 136.2, 303.8 137.0 Q 303.8 137.5, 303.6 137.9 Q 303.3 138.2, 302.8 138.5 M 301.7 136.0 Q 301.1 136.0, 300.8 136.2 Q 300.5 136.5, 300.5 137.0 Q 300.5 137.3, 300.7 137.6 Q 300.9 137.8, 301.2 137.9 Q 301.5 138.1, 302.1 138.3 Q 302.5 138.0, 302.7 137.7 Q 302.9 137.4, 302.9 137.0 Q 302.9 136.5, 302.6 136.2 Q 302.3 136.0, 301.7 136.0 M 301.7 141.5 Q 302.4 141.5, 302.8 141.1 Q 303.1 140.8, 303.1 140.2 Q 303.1 139.9, 302.9 139.6 Q 302.7 139.4, 302.4 139.3 Q 302.1 139.1, 301.6 139.0 L 301.2 138.8 Q 300.7 139.1, 300.5 139.5 Q 300.3 139.8, 300.3 140.2 Q 300.3 140.8, 300.7 141.1 Q 301.1 141.5, 301.7 141.5 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 335.9 152.2 Q 337.1 152.2, 337.7 153.0 Q 338.4 153.8, 338.4 155.5 Q 338.4 157.3, 337.6 158.2 Q 336.9 159.1, 335.4 159.1 Q 335.0 159.1, 334.6 159.0 Q 334.3 158.9, 333.9 158.7 L 334.3 158.1 Q 334.8 158.4, 335.4 158.4 Q 336.4 158.4, 336.8 157.8 Q 337.3 157.1, 337.4 155.9 Q 337.0 156.2, 336.6 156.3 Q 336.2 156.5, 335.7 156.5 Q 335.1 156.5, 334.6 156.3 Q 334.2 156.0, 333.9 155.5 Q 333.7 155.1, 333.7 154.5 Q 333.7 153.8, 333.9 153.3 Q 334.2 152.8, 334.8 152.5 Q 335.3 152.2, 335.9 152.2 M 334.6 154.5 Q 334.6 155.1, 335.0 155.4 Q 335.3 155.7, 335.9 155.7 Q 336.3 155.7, 336.7 155.6 Q 337.1 155.4, 337.4 155.1 Q 337.4 154.0, 337.0 153.5 Q 336.6 153.0, 335.9 153.0 Q 335.6 153.0, 335.3 153.2 Q 335.0 153.4, 334.8 153.7 Q 334.6 154.0, 334.6 154.5 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 268.6 133.4 L 270.1 133.4 L 270.1 128.3 L 268.5 128.8 L 268.3 128.3 L 270.4 127.4 L 271.0 127.5 L 271.0 133.4 L 272.4 133.4 L 272.4 134.2 L 268.6 134.2 L 268.6 133.4 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 275.7 134.2 Q 274.5 134.2, 273.8 133.3 Q 273.2 132.4, 273.2 130.8 Q 273.2 129.1, 273.8 128.2 Q 274.4 127.3, 275.7 127.3 Q 277.0 127.3, 277.6 128.2 Q 278.2 129.1, 278.2 130.8 Q 278.2 132.4, 277.6 133.3 Q 276.9 134.2, 275.7 134.2 M 275.7 133.5 Q 276.4 133.5, 276.8 132.8 Q 277.2 132.1, 277.2 130.8 Q 277.2 129.4, 276.8 128.8 Q 276.4 128.1, 275.7 128.1 Q 275.0 128.1, 274.6 128.8 Q 274.2 129.4, 274.2 130.8 Q 274.2 132.1, 274.6 132.8 Q 275.0 133.5, 275.7 133.5 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 269.1 37.7 L 270.6 37.7 L 270.6 32.6 L 269.0 33.1 L 268.7 32.5 L 270.8 31.6 L 271.5 31.7 L 271.5 37.7 L 272.8 37.7 L 272.8 38.4 L 269.1 38.4 L 269.1 37.7 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 274.0 37.7 L 275.5 37.7 L 275.5 32.6 L 273.9 33.1 L 273.6 32.5 L 275.7 31.6 L 276.4 31.7 L 276.4 37.7 L 277.7 37.7 L 277.7 38.4 L 274.0 38.4 L 274.0 37.7 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 329.3 117.5 L 330.8 117.5 L 330.8 112.4 L 329.2 112.9 L 329.0 112.3 L 331.1 111.4 L 331.7 111.5 L 331.7 117.5 L 333.1 117.5 L 333.1 118.2 L 329.3 118.2 L 329.3 117.5 \" fill=\"#000000\"/>\n",
"<path class=\"note\" d=\"M 333.9 112.7 Q 334.2 112.1, 334.8 111.7 Q 335.4 111.4, 336.2 111.4 Q 337.2 111.4, 337.8 111.9 Q 338.3 112.5, 338.3 113.5 Q 338.3 114.5, 337.6 115.4 Q 336.9 116.3, 335.3 117.5 L 338.5 117.5 L 338.5 118.2 L 333.9 118.2 L 333.9 117.6 Q 335.2 116.7, 335.9 116.0 Q 336.7 115.3, 337.0 114.7 Q 337.4 114.1, 337.4 113.5 Q 337.4 112.9, 337.1 112.5 Q 336.7 112.1, 336.2 112.1 Q 335.6 112.1, 335.3 112.4 Q 334.9 112.6, 334.6 113.1 L 333.9 112.7 \" fill=\"#000000\"/>\n",
"</svg>"
],
"text/plain": [
"<IPython.core.display.SVG object>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"molblock_permuted = RandomizeMolBlock(molblock)\n",
"\n",
"print(molblock)\n",
"print(molblock_permuted)\n",
"\n",
"molecule = Chem.MolFromMolBlock(molblock, removeHs=False)\n",
"molecule_permuted = Chem.MolFromMolBlock(molblock_permuted, removeHs=False)\n",
"Chem.Draw.MolsToGridImage([molecule, molecule_permuted])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, let's compare the InChI strings. As expected, they're different.\n",
"The invariance test fails."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"InChI=1S/C5H3N4O/c10-5-3-4(7-1-6-3)8-2-9-5/h1-2H,(H,6,7,8,9,10)\n",
"InChI=1S/C5H3N4O/c10-5-3-4(7-1-6-3)8-2-9-5/h1-2H,(H,6,7,8,9)\n"
]
},
{
"ename": "AssertionError",
"evalue": "InChI strings are not the same.",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[4], line 10\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(inchi_string)\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28mprint\u001b[39m(inchi_string_permuted)\n\u001b[0;32m---> 10\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m inchi_string \u001b[38;5;241m==\u001b[39m inchi_string_permuted, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInChI strings are not the same.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n",
"\u001b[0;31mAssertionError\u001b[0m: InChI strings are not the same."
]
}
],
"source": [
"_, inchi_string, _, _, _ = make_inchi_from_molfile_text(\n",
" inchi_lib, molblock, INCHI_API_PARAMETERS\n",
")\n",
"\n",
"_, inchi_string_permuted, _, _, _ = make_inchi_from_molfile_text(\n",
" inchi_lib, molblock_permuted, INCHI_API_PARAMETERS\n",
")\n",
"print(inchi_string)\n",
"print(inchi_string_permuted)\n",
"assert inchi_string == inchi_string_permuted, \"InChI strings are not the same.\""
]
}
],
"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.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment