diff --git a/30.zip b/30.zip new file mode 100644 index 0000000..d7f90f1 Binary files /dev/null and b/30.zip differ diff --git a/Sanitization.ipynb b/Sanitization.ipynb new file mode 100644 index 0000000..4b24c27 --- /dev/null +++ b/Sanitization.ipynb @@ -0,0 +1,1797 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting rdkit\n", + "\u001b[31m Could not find a version that satisfies the requirement rdkit (from versions: )\u001b[0m\n", + "\u001b[31mNo matching distribution found for rdkit\u001b[0m\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install rdkit\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from rdkit import Chem\n", + "from rdkit.Chem.Draw import IPythonConsole\n", + "from rdkit.Chem import Draw" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Building Molecules\n", + "====\n", + "\n", + "Overall process\n", + "----\n", + "\n", + "### From SMILES\n", + "\n", + "- Process SMILES\n", + "- Remove explicit Hs from graph\n", + "- Sanitize\n", + "- Perceive stereochemistry: remove redundant or incorrect stereo information. Assign CIP codes.\n", + "\n", + "### From CTAB\n", + "- Process CTAB\n", + "- Remove explicit Hs from graph\n", + "- Sanitize\n", + "- Assign cis/trans markers to double bonds based on geometry\n", + "- Perceive stereochemistry: remove redundant or incorrect stereo information. Assign CIP codes.\n", + "\n", + "\n", + "\n", + "Sanitization\n", + "----\n", + "\n", + "\n", + "Chem.SanitizeMol() calls the following in sequence\n", + " \n", + "- `MolOps::cleanUp()` : clean up a small-set of substructures that are frequently \"incorrectly\" drawn. Example: `N(=O)=O -> [N+](=O)[O-]` \n", + "- `mol.updatePropertyCache()` : calculate explicit and implicit valence of all atoms. **FAILS** when atoms have illegal valence.\n", + "- `MolOps::symmetrizeSSSR()` : generates a symmetrized set of smallest rings. **FAILS** in very rare cases.\n", + "- `MolOps::Kekulize()` : generates a Kekule structure for the molecule. **FAILS** if a Kekule form cannot be found or non-ring bonds are marked as aromatic.\n", + "- `MolOps::assignRadicals()` : determines the number of radicals at each atom\n", + "- `MolOps::setAromaticity()` : finds aromatic ring systems, marks their atoms as aromatic, marks their bonds as aromatic, and converts their bonds to `BondType::AROMATIC`\n", + "- `MolOps::setConjugation()` : identifies conjugated bond systems\n", + "- `MolOps::setHybridization()` : assigns hybridization to atoms\n", + "- `MolOps::cleanupChirality()` : removes atom-stereochemistry markings from non-sp3 centers.\n", + "- `MolOps::adjustHs()` : assigns explicit Hs to aromatic heteroatoms that need them. e.g. solves the `C1=CNC=C1 -> c1c[nH]cc1` problem\n", + "\n", + "\n", + "How long does it all take?\n", + "----\n", + "\n", + "As of this writing (21 Sept 2012), building 100K drug-like molecules from SMILES takes ~14 seconds on my linux box.\n", + "\n", + "Here's the percentage of total run time broken down by step:\n", + "\n", + " | Step | Time | Percent | Notes |\n", + " | toMol() | 1.8 | 13.1 | SMILES parser |\n", + " | MolOps::removeHs() | 7.7 | 55.7 | |\n", + " | MolOps::sanitizeMol() | 6.8 | 48.8 | Part of the removeHs tally |\n", + " | MolOps::assignStereochemistry() | 3.7 | 26.9 | |\n", + "\n", + "\n", + "And here's a detailed view of the sanitization steps:\n", + "\n", + " | Step | Time | Percent | Notes |\n", + " | MolOps::cleanUp() | 0.1 | 1.2 | |\n", + " | mol.updatePropertyCache() | 0.4 | 2.8 | |\n", + " | MolOps::symmetrizeSSSR() | 2.1 | 15.3 | 2.08 in findSSSR |\n", + " | MolOps::Kekulize() | 1.0 | 6.9 | |\n", + " | MolOps::assignRadicals() | 0.1 | 0.6 | |\n", + " | MolOps::setAromaticity() | 1.2 | 8.7 | |\n", + " | MolOps::setConjugation() | 0.8 | 5.5 | |\n", + " | MolOps::setHybridization() | 0.3 | 2.0 | |\n", + " | MolOps::cleanupChirality() | 0.1 | 0.5 | |\n", + " | MolOps::adjustHs() | 0.4 | 3.1 | |\n", + "\n", + "Can it go faster?\n", + "----\n", + "\n", + "### Use pickles\n", + "Build molecules once, store pickles, build from them.\n", + "\n", + "This is nice because the pickle contains pretty much everything the RDKit knows about the molecule. It's also quite fast, but it's not inter-operable with other systems. It also takes up a fair amount of disk space.\n", + "\n", + "For the 100K drug-like molecules, creating the molecules from the pickle file takes about 1.3 seconds (compare with the 14 seconds for building the molecule from SMILES). The pickle file itself took 0.9 seconds to create and is 28.3MB (the SMILES file is 3.3MB).\n", + "\n", + "### Use RDKit SMILES\n", + "Build molecules once, write canonical SMILES, build from that using limited sanitization.\n", + "\n", + "The idea is to trust the input SMILES to only contain correct molecules with a reasonable aromaticity assignment and no bogus stereochemistry info.\n", + "\n", + "For the 100K drug-like molecules, parsing the SMILES and calling `mol.updatePropertyCache()` so that atoms have valences assigned takes 2.1 seconds. \n", + "\n", + "These input molecules have sufficient information to allow many standard operations\n", + "\n", + "Calling `MolOps::fastFindRings()` to determine whether or not atoms and bonds are in rings takes 0.4 seconds. \n", + "`MolOps::fastFindRings()` does a depth-first traversal of the molecule graph to find rings. This is a fast way to find cycles, but unfortunately it doesn't necessarily find the smallest cycles. In order to get information about about ring sizes, etc. a call to `MolOps::symmetrizeSSSR()` is required. This takes 2.1 seconds for the 100K molecules. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An example of doing partial sanitization\n", + "-----\n", + "\n", + "Start by building a molecule from SMILES and assigning valences:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n+fM0f/586ty5M1lbW9PUqVPp8OHDVFdXp+WUqhUVFZG3tzc5OjpSbm5uk78+Pz+fwsPDydHRkSwt\nLSk4OJh27dpFtbW1GkgruH+fKDiYyNycKDKSSJuXLvfu3Ut2dnY0adIkKi8v194bE9EPP/xA0dHR\nRET08ccf09dff01ERN988w3NmzePiIhWr15N06ZNo5qaGrK1taVNmzYREdHdu3fJyMiI8vLytJqZ\ntUxchKxedHQ0ubq6qhxTV1dHx44do7CwMLKxsaF27dpRWFgY5eTkaCmlcnl5edSzZ096+eWXmz1r\nlclklJiYSIGBgWRmZkavv36SvvqK6No1NYX9S2KiMAv08ND8LFCZy5cv04svvkguLi504cIFjb7X\njRs3aOvWrUREtG3bNho3bhwRER04cIC8vb2JiCg7O7v+5/Dq1avUuXNnksvl1K9fPzI1NaWkpCS6\nfPkyvfXWW6LPZFnLwEXI6mVlZZGpqSlJpdJGja+qqqJt27aRv78/mZqakqurK0VGRtLt27c1nPRp\nu3btIhsbG5o2bVqj8zdWUVERrV5dSf37ExkbE40YQRQTQ/TwoeLxEyYQAUR//Xlf7+23iUJChL9/\n+FC8WaAiVVVVNHXqVLK1taWdO3eq9bXlcjmd+6vlHy+2Bw8ekK2tLUmlUqqqqiJbW1sqLi6muro6\n6tChA12/fp2IiHr37k1nzpyhdevWkZeXF7Vq1YpiY2PVmpEZNi5CVq+iooKMjY3p999/b/LX3rp1\ni5YvX04vvvgimZiYkK+vL8XGxlJFRYUGkj4pMjKSWrVqRcuXL9f4e12/LhRXz55Cifn7E23bRvT4\nyv4JE4gsLIj69CF6/Mzx40U4bZowCzx7VuORm2Tt2rVkZmZGn3zyidpOe8vlcnJwcKBLly4REZGr\nq2v99UBvb2/av38/ERGNHz++frY4ZcoUWrNmDRERzZs3j7755hsqLCwke3t72rBhA5mZmdEvv/yi\nlnyM8XIrVq9169ZwdHREbm5uk7/WwcEBc+fORW5uLk6ePAlXV1csWLAADg4OGtuiIJPJMHPmTCxe\nvBhJSUmYO3euWl9fka5dgU8+AS5fBtLTgeefB2bOBDp1At55B7h/XxgXHAzcuQNs2KD4dcaPB06c\nACQSjUdukrCwMBw6dAixsbEICAho1g0IFi5ciJ07d8LIyAgjR47EwYMHAQCjRo2q/3tfX98nPn/g\n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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles('N#Cc1ccccc1N1C[C@H](C(=O)[O-])CC1=O',sanitize=False)\n", + "m.UpdatePropertyCache()\n", + "m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that the depiction around the triple bond is wrong. This is because no hybridization information is present.\n", + "\n", + "That's easy to fix:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Chem.SetHybridization(m)\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tmp=m.GetSubstructMatch(Chem.MolFromSmarts('c1ccccc1'))\n", + "m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Doing a substructure search that looks for ring information fails though:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "#m.HasSubstructMatch(Chem.MolFromSmarts('[r]'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But this can be cleared up using `FastFindRings()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Chem.FastFindRings(m)\n", + "m.HasSubstructMatch(Chem.MolFromSmarts('[r]'))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[2], [3], [4], [5], [6], [7]]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[a;r]'))]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[8], [9], [10], [14], [15]]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[A;r]'))]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nRGTX/h+RvsAWy24oyAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's another example of the problems that a lack of complete ring information can cause.\n", + "\n", + "Start with the sanitized molecule:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sm = Chem.MolFromSmiles('O=C(N[C@H]1CCCc2ccccc21)c1n[nH]c2ccccc21')\n", + "sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now build the same thing with minimal sanitization." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles('O=C(N[C@H]1CCCc2ccccc21)c1n[nH]c2ccccc21',sanitize=False)\n", + "m.UpdatePropertyCache()\n", + "Chem.SetHybridization(m)\n", + "Chem.FastFindRings(m)\n", + "m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That happened because the depiction algorithm uses ring-size information, which is not correct after calling FastFindRings()\n", + "\n", + "Ring membership is fine:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[3], [4], [5], [6]]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[A;r]'))]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But the ring sizes are not:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[r5]'))]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ring counts are also wrong:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[7], [8], [9], [10], [11], [12], [16], [17], [18], [19], [20], [21]]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[list(x) for x in m.GetSubstructMatches(Chem.MolFromSmarts('[R2]'))]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAYAAABNcIgQAAAi/UlEQVR4nO3deXhU5dkG8HtC9oQl\nLCYCQhJEBBQjUATFhRJQBEKgZVNQ1vCpCFcRBUVWqWDBBii14lKWumJFEJB9U6QIQQQSZZVAAwIB\nwpaFbM/3x9PxZJJJDMnMnBnm/l1XLsc5k3OemDj3vO95F4uICIiIiLyUj9kFEBERmYlBSEREXo1B\nSEREXo1BSEREXo1BSEREXo1BSEREXo1BSEREXo1BSEREXo1BSEREXo1BSEREXo1BSEREXo1BSERE\nXo1BSEREXo1BSEREXo1BSEREXo1BSEREXo1BSESmOn78OIYNG4aEhAQUFhaaXQ55IQYhEZkiOTkZ\nAwcOxB133IHk5GQsXLgQPj58SyLX418dEbnUypUr0b59e7Rs2RIWiwU//PADZsyYgZCQELNLIy/F\nICQipysoKMCSJUvQsmVL9OvXD61atcKRI0ewZMkSNG/eHFlZWQgODja7TPJSvmYXQEQ3r7y8PCxc\nuBCzZs3ChQsXMGrUKDz33HOoU6eOzesyMzPZIiTTMAiJyOGysrLw7rvvIjExEXl5eXjppZcwZMgQ\nVK1a1e7rGYRkJgYhETlMRkYG5s6di7feegs1atTAtGnT0LdvXwQEBJT5fZmZmewaJdMwCImo0k6d\nOoW//OUvWLhwIe644w68//776Nq1a7lHgWZlZbFFSKbhYBkiqrDDhw/jqaeeQnR0NJKSkvDhhx9i\n9+7d6N69+w1NhWDXKJmJQUhEN2zPnj3o3r07mjVrhoyMDGzatAnffvstunfvDovFcsPnYxCSmRiE\nRFRuO3bsQPfu3dGuXTuEhYVhz549v84LrAxOnyAzMQiJqFzmzZuHhx9+GNWqVUNSUhKWLFmCe+65\nxyHnZouQzMTBMkT0m7777juMHTsWGzZswCOPPOLw82dmZqJ+/foOPy9RebBFSERlEhGMHj0azzzz\njFNCEGDXKJmLLUIiKtOyZctw8OBBrFq1ymnXYNcomYktQiIqVV5eHl555RW8+OKLqF27ttOuwyAk\nMzEIiahU77zzDrKzszFmzBinXodBSGZi1ygR2XXlyhVMnToVr7/+OoKCgpx6Ld4jJDOxRUhEds2e\nPRvh4eEYPHiw06/FFiGZiS1CIiohLS0Ns2fPxtKlS1GlShWnX49BSGZii5CISpg2bRratWuHbt26\nOf1aBQUFyMnJYdcomYYtQiKykZKSgoULF2LHjh0uuV5WVhYAsEVIprGIiJhdBBG5j7i4OAQFBeHT\nTz91yfXOnj2LiIgInDp1CnXr1nXJNYmKYouQiH61efNmrFu3DgcPHnTZNTMzMwGwRUjm4T1CIgKg\nS6mNHz8eI0aMQFRUlMuuaw1C3iMks7BFSEQAgKVLl+Lw4cP46quvXHrdzMxM+Pn5wc/Pz6XXJbJi\ni5DI0TIzgWefBerXB+rVAx58ENi1y+yqynT9+nW8/PLLTl9KzZ6srCx2i5Kp2CIkcrShQwE/P+DI\nESAoCFi5EujaFdi/H7j1VrOrs+vtt99Gfn6+05dSs4dzCMlsbBESOdKhQ8C6dcA//qEhCADduwN/\n+AOQmGhubaW4fPkypk+fjkmTJjl9KTV7GIRkNgYhkSPt3w80bw6Ehto+37atHnNDb7zxhsuWUrMn\nMzOTA2XIVOwaJccrKNB7YuvXA8ePAy+8oF2CLr735FbcdLruyZMnkZiY6LKl1OzhPUIyG4OQKk8E\n+P57YONG/fr2WyA72zi+bBlQty6webP+82Z2991ASgpw7Zptq3DnTqBxY/PqKsWUKVNw//33o3v3\n7qbVwK5RMhuDkCrmyhUNtg0btOV39GjJ1wQGAg0aAIcP672zxx7ToLzlFtfX6woFBcCddwKdOgHP\nPAO8847eJ1y1Cvj8c+Cbb8yu0MbevXuxZMkSly2lVhp2jZLZGIRUPtev6xv5xo06CvLHH0u+xtcX\neOQRIDZWv2JigCpVNBCeeQY4cABo3x7YskWnFdxsLl0CatUC/vlPYOxY4Pbb9fmoKA3D+vVNLa+4\nCRMmoFevXmjTpo2pdbBrlMzGICT7ind37tgB/G9xZBsNGwKPPqrB9/vfaxAUl5AAWCzA//2fTimw\nhmFkpNN/DJfKyNCfPzQUePtt/SqqaHexyU6dOoX//ve/+Oyzz8wuhV2jZDoGIRl++UVbexs3Al9/\nDZw9W/I11asDnTsbrb7o6PKde/hwwMdHQzE1VVuOW7Zoa+lmkZFR9nFf9/nfLTc3F8nJyahTp47Z\npSAzM9Mt6iDv5T7/Z5LrFe3u3LgR2LsXKCy0fY2PD9Cunc6Fi40F7rmn/G/oZ88C4eHGvw8dqi3D\n4cOBEyeADh30PmN5w9TdXbpU9nE3CsLbbrsNvr6+OH78OGrZa8W7UGZmJho2bGhqDeTdOI/QW+Xl\naYusUyfgjTeAPXuMEKxTB+jfX+91nTwJbN8OjBsHtGpV/jfzv/1Nu02XL7d9fsgQ4L33NGCtYXjs\nmEN/NNOcPAlMmlTy+eRkYNgw/RDgJnx9fVG/fn0cP37c7FJ4j5BM5z4fUcm13n8fmDJFB7OEhBj3\n+W6ku7M0GRnAtGna4uzfH/jiCx0xajV4sI6mHDhQw6NDBw3lRo0qd12zpaVpq7q4AweAbdtcX89v\niIqKcosg5D1CMhtbhN5qwwbtumzcGDh9Gli6VO/fOaKbMixMu1zr1gVycoC4OJ1LWFS/fsAHH2gL\n87//1TC0NwXDk6Sna2u6vM+bLCoqCqmpqWaXwekTZDoGoTcqKNB7c4CGlDM+jd95pzGBPi8P6NMH\n+Ogj29f07Qt8+KFtGB454vhaXCU93f7qOW4chGwREjEIvdMPPxgDOzp2dN51mjQx5gwWFABPPaXB\nV5Q1IP38tGvxoYfsz1H0BB7YInSHIOQ9QjIbg9Abbdqk/wwI0Dl9VidP6qTv4cN1ioMj3HGHhmH9\n+hqGTz+tXaJF9e5thOGZMzofMSXFMdd3pfPnPS4IT5w4gcLiI4VdjC1CMhuD0BtZg7BtW6DovZkN\nG4BTp3RUp7+/467XuLHeM4yM1DAcNAhYssT2NX/8I/DJJxqGZ89qGCYnO64GF1jcoAHS7O03WFpA\nmiwqKgo5OTk4c+aMqXXwHiGZjUHoba5f1+kQgIZNUdaAvPNOxy+OHRkJbN2qE+gLCnQaxeLFtq/p\n1UtHmAYEAOfOabftgQOOrcNJRATD16/H6bCwEsfaX7+O5RERJlRVtoiICAQGBpraPZqXl4fc3Fy2\nCMlUDEJvs3OnsVRa0fuDIkYQOuu+YcOG2k0aHW2E4aJFtq/p2lVHmAYGGmHopvv4FXXp0iXk5eXZ\nXSHl0LFjCKxZ04SqymaxWNCwYUNTgzDrf3+LDEIyE4PQ21hHi1arBtx3n/F8SooGD+DcATTWMGzU\nSCfwDxmiu7kX9fjjRhimp+tybElJzqvJAdLT0wGgRBAWFBTg4sWLbruEmNkDZqxByK5RMhOD0NtY\nW33t29uuEmN9vkoVncbgTA0aGGEoAjz3HPDWW7av6dJFu0kDA3WCfufObh2G6enpCAoKQmixnekv\nXryIwsJCBmEpMjMzAbBFSOZiEHqTK1eA777Tx8VbfdaW4r33AjVqOL+W227TMLz9dg3DkSOBv//d\n9jWPPQZ8+qkO3MnI0G7Tw4edX1sFpKeno7adOYTWlqK9Y+7A7En11iBki5DMxCD0Jtu3A/n5+rho\nEObnG0uAObNbtLjbbtPRpM2aaRg+/7yuUVpUXJzu5efvjyvVq2OTdaCPmykrCIODg932jd4dWoQB\nAQHwdaMFycn7MAi9ibX7s04doEUL4/k9e4DLl/WxK4MQACIitDVqDcPRo4F582xf06kTEBaGakeO\n4HhCAlasWOHaGsvh3Llzdrs/09PT3bZbFNAgTEtLQ15eninX52R6cgcMQm9iDcIOHWx3QrA+HxgI\nPPig6+sKDwfWrjW6SadNAy5eNI4fPfrr3ojRw4ejd+/e+KD4pHyTlRZ458+fd/sgzM/PR1paminX\n5xxCcgcMQm+Rnm5MQyje6rMGYbt2GoZmsN4zbNtWJ/YXnW5grc/HB7+fPh1vv/02hgwZgiXFJ+Wb\nqLQgdPcWYc2aNVG9enXTuke5qgy5A3bMe4stW7S1BdhOpM/OBnbs0Meu7hYtrn594D//Kfm8NQhb\ntABq1cKQIUMQFBSEQYMGQUTw9NNPu7ZOO9LT09G8eXO7z7tzEAJAZGQkg5C8GoPQW1hHhUZGahek\n1Y4dulUSYH4Q2lNYaNRepL7+/fvDYrHg6aefhohg0KBB5tT3P2W1COvVq2dCReVn5oAZh90jzMrS\nVZMA4No13fEEAK5eNQaI3X23Y5cOpJsGg9BbFL0/aO/56tWB1q1dW1N57NsHXLigj4sFdb9+/eDj\n44MBAwYgOzsbzzzzjAkFqrKCMCYmxvUF3QCzW4STjh3TXUhEjF1RCgp0ug+goXbtmj7OzQX+N+UC\nOTnao1Fen32mc1jbtHFY/XRzYBB6g9RUY9Pb0u4PPvSQ7QR7d2Gtz99fayymT58+AIABAwZARPDs\ns8+6srpfDRgwAE2bNsWmTZuwd+9eNGnSBN27d3f7wTKAtgi/s84vdaXt2zF02TLUyMjQkHK2Pn2A\n5s2B77/Xxd2J/scN3/nI4bZs0X9aLEBsrPF8RoZOnQDcs1sUMIKwTZtSNxDu06cPfHx88OSTT6Kw\nsBAjR450YYFAYWEh7rvvPgwcOBApKSno0qULpkyZgn79+mH16tUeEYQubxGKAC+9hPA9e4CgIP37\ns1gA66LlPj7aSwHoB7SqVfWxnx9gXb0nIMDYPSUoyBjoFRJidIGGhur3rF8PvPKK7mgya5Y+JrIS\nuvk9+aQIINKsme3zy5fr84BIcrI5tZUlJ0ckOFjrmzz5N1/+73//W/z9/WXevHnOr01EsrKyZM6c\nORIZGSm33nqrzJkzR65cuSIiIqmpqfLII49IRESErFq1yiX1VNSBAwfEYrFIZmam6y768cfG3977\n77vmml266PWCgkR+/tk11ySPwCC82RUWioSH6xvA88/bHnv+eX3+1lv1de7m66+NN8tvvinXt6xa\ntUoCAwNl7ty5TisrIyNDJk+eLLfccos0aNBAFixYIDk5OSVeV1hYKHPmzJHAwEBJSEiQa9euOa2m\nyrh27ZoAkJ9++sk1F8zJEYmK0t/r3XeL5Oe75rpHjogEBup14+Jcc03yCAzCm11KihEmy5fbHmvW\nTJ9/4glzavstkydrfaGhIrm55f621atXS2BgoCQmJjq0nNOnT8uoUaOkatWq0qxZM1m8eLHklqOu\nAwcOSExMjERHR8s35Qx0V9q/f7/06NFDxo4d65oLJiYaf5OrV7vmmlavvmpce8UK116b3BaD8GY3\nb57+T1+lisilS8bzp0+LWCyu7Zq6Ue3ba31dutzwt3711VcSGBgor7/+eqXLOHLkiAwcOFACAgKk\nbdu28uWXX0pBQcENnSM7O1vGjRsn/v7+Mm7cOLl+/Xql66qo1NRUWbBggfTu3VuaN28ua9eulV27\ndknVqlUd8t+rTBcuiISF6e81Ntb22IkTIgkJ+jVkiEjv3vrVs6e+NjZW5OGHRVq10q8WLUSio/Xr\nttv0vGFhIiEhRtj17Wt7jawsfT0g0qCBiJu20sm1GIQ3ux499H/6Fi1sn796VWTJEpFBg0RSU00p\nrUxXr4r4+Wnts2dX6BRr1qyRwMBAmT59eoW+PyUlRQYOHCh+fn7SrVs3h7Tmvv32W4mOjpYWLVrI\nvn37Kn2+8rh8+bIsXbpUEhISJDo6WgAIAOnataucPXvWpraQkBB58803nVfM+PH6O/XxEdm71/bY\n/v1GgDnqq2fPkjWsWWMcnzDBeT8reQyLiHW5EbopbdgADB2qc/G2bPGcOVRr1ugGvQCwdy9Qwbl4\n69atQ3x8PCZMmIBXX321XN+zc+dO/PnPf8batWvRv39/jBkzxqFzAc+fP48RI0Zg/fr1mDt3IQYP\n/qPN0q+VVVhYiL1792LlypVYtWoV9u3bh3zrpHLolkeJiYkYPnw4LMUuvH79evTo0QPz58/H0KFD\nHVcUAJw8CTRpovP/nngC+PBD2+OpqcAf/6iPq1TRzaOLPy46grS0x0VHljZsCDz6aMlaevYEli/X\n0aU//AA0beqgH5I8ktlJTE62aZOIr69++q1dW+SHH8yuqHxeeEFrrlOn0gN51q1bJ0FBQTJ16tQy\nX/fll1/KAw88IAEBATJq1Cg5evRopa77WxYtWiT3339eHn9ce6or4+TJk792d9auXfvXVl/xr5iY\nGElJSSnzXJ9//rn4+/vLp59+Wrmiihs0SH+nAQEix4879tw36uRJvfcMaHerOw4WI5dhEHqDVav0\nzQcQqV5d5D//Mbui3xYTo/X27u2Q023dulVCQ0NlypQpNs/n5+fL4sWLJSYmRoKDg2XUqFFy4sQJ\nh1yzPM6cEenWTaRaNZFTp8r/fQUFBXLlyhU5c+aMHDt2TA4ePCj16tUrNQB9fHxk3Lhxkp2dXa7z\nL1q0SAICAmS1owazfP+9docCImPGOOaclTVjhtFF+tFHZldDJmIQeouvvjKGjlevLrJjh9kVle7c\nOWMgz9tvO+y027Ztk9DQUBk3bpzk5OTInDlzpFGjRlKzZk2ZPHmypKenO+xaN6KwUGTBAh0rUhmR\nkZF2Q7Bu3bqyYcOGGz7f3LlzJSgoSLZu3Vq5wkREHntMf581a4pcvFj58znC9esiTZtqXRERIhkZ\nZldEJmEQepM1a4wwDAkR2bLF7IrsW7rU+KR+5IhDT7127VoJCgqS+vXrS61atWTKlCly/vx5h16j\novLy9NfSqZPxXHq6fm6xCgkR+eUX2+NVquhje0HYuXNnOV2JfteJEydKtWrVZPfu3RU+h6xfb/w+\n33ij4udxhm3bjA9do0ebXQ2ZhEHobdautQ3DzZvNqSM/X2TnTr2HWdyIEVpfZKRTLj1u3Dhp2rSp\nXL161Snnr4yQEB3Vv22b/ntFgzAkJEQWL17skJpeeOEFqV27tiRXZPWhggKRe+7R32fDhiLl7Jp1\nKevKS1WqaBcueR1uzOttHn0UWLFC12bMzAS6dTPWInW2PXuAN94AOnXSUYBt2wJjxpR8XWk7ZThI\ny5YtkZ2djVDryEI3M2kSMHFixb+/ZcuWSEpKwlNPPeWQembNmoX4+Hh07twZP//8841980cf6Q4i\nADBtmnkbP5flzTeBGjV0x4sRI3TrL/IuZicxmWTrVmPUXHCw/ZZZZV27piuHjB5t3Isp/hUYKHL5\nsvE9x48bxz74wPE1id4rDAoKcsq5KyskRG+htWwpsm6d/RZh/frauGrYUOeRW1uEjRo1ksmTJ0te\nXp7D68rPz5e+fftKgwYNJLW8806zs7VIQH+gG1yEwKWsC08AIu++a3Y15GIMQm+2bZttGFZgQIWN\n3Fw9x7hxuvJHlSolg8/XV1cImTlTJClJb4wV9f77+jqLRYdUVsK2bdukffv2JZ4/dOiQAJBLRVfa\ncRMhITpmY9UqkTZtbqxrdIeTB0Dl5ubK448/Lo0bN5Yz5fndzJpl/N7XrXNqbZWWny9y773GgJ5z\n58yuiFyIQejtvv7aCMOgIB3YcCOOHxeZM0fDzXqe4l+Rkbps1tKlIr81MOWJJ+zvlFEBO3fuFF9f\n3xLLoV2+fFkAyMGDByt9DUezBqGISLt2+rmgvEHoCllZWfLQQw9JixYt5GJZoz/PnxepUUN/l507\nu67Ayti1y5jiMWyY2dWQCzEISXd2qFrVmOy8cmXpr710SQMtIcFYs7H4V40aOv9vwQKRY8fKX0dO\njk76B0rulFEBqampAkDO2fl0Hxwc7JhpAQ5WNAg3btSeRXcKQhH9ING6dWtp27Zt6QOOxo41llJz\n0VJyDpGQYPRIuPMUI3IoDpYhoH17XdKsalXg+nXgD38AVq60/9r33tOdvt95B7AOnLBYgBYtgBde\nANatA06fBpYuBRISgOjo0q8rYgygad9el8W6ehUSEOCQgTIRERGwWCw4c+ZMiWPh4eF2n3cnHTuW\n/Z/PLNWqVcOaNWtw5coVxMfHIycnx/YFP/8MzJunjwcM0L8NTzFjBlCnjv5tjhgBFFmajm5iZicx\nuZFvv9UlTgARf3/729T8+KMej4oSGTVK7wneyDSEtDRtKfburcun2WlR9rvzTp3s7ABhYWGy3k53\nb7t27Zy6Z6E3SEtLk6ioKImLi7MdoDNggHHfOS3NvAIrynqfGtBuf7rpsUVIhvvvBzZvBsLCgNxc\noHdvXZi4qKZNgQMHgGPHgLlzgdhYY4FjewoKgJ07dej8Aw8AkZH6Sfuzz4D0dH2Njw/QujXw8ss4\n+8kn+OLQIfycluaQHykiIsJuyy8iIgJnz551yDW8Vb169bBhwwYkJSVh0KBBKCws1Ba+dTHtkSOB\nevXMLbIiBg8GHn5YH0+cCJw6ZW495HQMQrLVqpXuWFGzpoZh374lw/Cuu1DmdgnF5wu2awdMngzs\n2GF0NbVqBYwbp9e6cgXYvRt4/XWE9+2LZjExWF78mhVUVhC6e9eoJ2jUqBE2b96MjRs3YtiwYcDY\nsdqWqlULePnlkt9QUOD6IsuyZQsQFwckJxvPWSzAX/+qu15cvQosWmRaeeQavmYXQG7IGoadO+v2\nTX36AJ98AvTqZf/1GRnAxo16X3HDBsBewISFaesxNlYDMiqq1MvHx8dj+fLlGGNvsv0NKq3lFx4e\njl27dlX6/AQ0adIEa9euxaQHHwSuXdMnX3xRJ6lbJScDo0bphyjr/UOziQAvvQQkJemk/2PHdDsn\nALj3XuCWW7S3wlO2LqMKYxCSfS1baqh16mSE4ZIluo9cXh6wbZuG38aNup9b8U/6/v7AQw8Z4RcT\no5+wy6Fnz56YOnUqzpw5g4iIiEr9GGwRukZMTAzGLF6M43/6E6JOn9a/l6LmzdPW1zffAMOGuccA\nmn/9S0MQAKZPN0LQeuyXX/Qx/05ufmbfpCQ3t3Onjt8HdMf4Dh10pX570ybq1dM95z76qNITkhs3\nbizvvfdepcufOXOmdOzYscTzX3zxhdx+e4tKn5+K2L3bmIc3dKjtsYsXRW65RY+1bm3+KjOZmfr3\nam/Vm6LHWrUyv1ZyOt4jpLLdd5+2/mrXBqpX10/11k/IYWE6oGbBAu1WSksDFi4E+vfXIeiVEBcX\n55D7hJGRj6NOnVdKPB8REY8TJ/ZxWUlHat0aePZZffzPf9quYRsWBsycqY+TkoB333V9fUXNn28M\ngpkxQ7tA7R2bNcv2GN2ULCIiZhdBHmDPHl2MeOxYHfzSqZPO/QsIcMrltm/fjtjYWKSnp6Nq1aoV\nPs+6dTqVzTpA1So1VW9TnjtX6cymoq5c0ZHFp08DzZsDe/cCfn56TETnh27bpsF48KDeh3O1CxeA\n228HLl3Sv+P16+0fe/RRYO1a19dHLsePOlQ+rVoBv/udvonNnKmzvZ0UggBw//33IywsDGsr+UYU\nHq7vbXl5ts9bbz3y9o+DVaumI4YBICUFmDPHOGaxaGvLz08HWI0fb0qJ+POfNeh8fLTFV9TrrxvH\n/vIXM6ojEzAIyS35+PigW7dule4ejYjQhkjxgaOBgTqokUHoBAMGAL//vT6eMkWb31Z33QU895w+\nXrQI2LrVtbUdOwb8/e/6+MkngXvusT02f74+HjjQPQb0kEswCMltxcfHY/Xq1cjNza3wOerU0cGq\n9gIvIoJB6DR/+5u2/LKytDu9qGnTdKK9iE66L95cd6aJE3V+bGAg8NprtscmTdJjwcHaaiSvwSAk\ntxUbGwsRwdZKtBqqVNEwZBC6WLNmxqbLn38OrF5tHKtaFZg9Wx+npLhuXuHu3TofFtAAbtjQOJaU\nBHz8sT5+/nnPXBGHKoyDZcit9e3bF7Vq1cJbb71V4XPce6/2xg0bZvv8mjW6OtyDD1aySLIvK0sH\nzKSmAo0a6aT6ojvUx8YCmzZpMP74I1C/vnPrefhh4OuvddWbo0dtJ/w/8oje/7Z3jG56bBGSW+vR\nowdWrFiBynxeK63l16ULQ9CpgoN1qTJA779Zp09Y/eMfOuDq6lWj9egsq1ZpCAI6SKdo0H31lYYg\nAEyYwBD0QgxCcmtdu3bF+fPnK7UcWnh4ycEyoaG6gpzV+fN8/3OKnj2Bbt308cyZwKFDxrHGjY0A\n/OwzDSRnyM/XJd8A7Q4dOdI4VlBgjF5t1MgYyENehUFIbq169ero0KFDpUaPltYiPHTIaCSQE82Z\nAwQF6V6Xo0bZHps40Vh3dvRooPjeho6waJHOWQR0gEzR7tnFi3U3Fesxf3/HX5/cHoOQ3F58fDw+\n//zzCn9/gwb2n580Sd+HyckaNTJaXevXA//+t3EsKAhITNTHR48acxAdJTNTdz4BdC7sk08ax7Ky\njD+A1q2Bfv0ce23yGAxCcntxcXE4duwYfvrppwp9/7PPas9bcb166WYJRRcWIScZPx5o0kQf/+lP\nxi4VANCjh9F9OmMGcPiw467717/qKjfWcxddLm3OHOPY7Nllby1GNzUGIbm9unXrok2bNg7bo9DK\nYtEpbWwVuoC/v84tBHRN2mnTbI/Pnw+EhGj36fPPO+aaZ84Yq8N07qzLqVmdPWsM3una1diIl7wS\ng5A8QlxcHFauXOnw83btqnMNv/zS4aem4jp1MrZnSkzUPQCtGjbUjZoBbaJXoiv8V9Ona8uztKXU\nrl7VrZeKHyOvwyAkj9CrVwJ+/nnZr1vEOdJrr5VsoJCTzJ2ru5jk5+vozaLTYsaOBaKj9fH06bbH\nKsLPT4OuTx/b5dKOHNGpGwDw9NO6SDh5NQYheYQmTWqhZs0ILFvm+HN37Gi8/5KTRUToKCUA2L5d\nN3u2CgrSoHziCV3toLL37BITddPo4gNwXn1Vl3ULCeEnIALAlWXIg0yYAOzaBWzYYHYlVCn5+TpK\nc98+Xcnl0CH9pyvs2KHbh4noH9T06a65Lrk1tgjJY8TH6wIgFy9W/BxJSQ4rhyrK11d3gLBYdI8s\nV45WGj9eQzA83LgnSV6PQUgeo3Vr7Vkrun7zjUhNBVascGhJVFEPPAAMGqSPFywAvvvOede6elX3\nP/zoI+Cbb/S5CRN0jVMisGuUPMzIkcAvv9z4oMKCAl1XuWVLnT7GKWNu4MIF4M47dX27evV0srvF\noqEFAIWFwOXL+jg/XwMN0Pt71nmI16/rxHgAyM42VqbJzNQtleyJigJ++smpG0uTZ2EQkkfZuFHn\nX6en65rO5fXmmzqf+sAB4NZbnVcf3aD583W0aGCgEXrOlJioE/u7dHH+tchjMAjJo+Tl6e2dhQs1\nEMtj/36gTRvdbq5nT+fWRzeooED7rBMSjJ3sa9TQlqHFYqyEXqUKUK2aPvbz01XTAZ2oHxKijwMD\ndeQpoJ+SrC2+0FD9HkCHCNes6dyfiTwOg5A8zsCBOt5i4cLffm1uLnDffcBddwH/+pfzayMiz8PB\nMuRx4uOBlSv1ttFvmTpVR5nOn+/0sojIQzEIyeN06aLjIqwDAEvz9de6etYHH+hiJkRE9jAIyeME\nBwOxsUBZa3BfvQoMHqz7rHIXeiIqC4OQPFJ8PLBsWenLUb74oo6hsG4wQERUGgYheaT4eB0UmJxc\n8tjmzfr18cecKkZEv42jRomIyKuxRUhERF6NQUgeIzRUNxq3On/emG9tPX7mjO1xX1+XlUdEHopB\nSB7l0CGdFkFE5CgMQvIokya5dtceIrr5MQjJo/TqpRsPrF9v//jvfgdERupXy5aurIyIPBWDkDyK\nxQJMm1Z6q3D3bl27OTUV+P57V1ZGRJ6KQUgep2tX3Yzgyy/NroSIbgYcU0ce6bXXgKFDza6CiG4G\nbBGSR+rYEYiONrsKIroZcGUZIiLyamwREhGRV2MQEhGRV2MQEhGRV2MQEhGRV2MQEhGRV2MQEhGR\nV2MQEhGRV2MQEhGRV2MQEhGRV2MQEhGRV2MQEhGRV2MQEhGRV2MQEhGRV/t/CSrQ0fxg+mkAAAAA\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the query should have generated:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[7], [12], [16], [21]]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[list(x) for x in sm.GetSubstructMatches(Chem.MolFromSmarts('[R2]'))]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\naosAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An aside about FastFindRings\n", + "---\n", + "\n", + "What rings *does* it find?" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "m = Chem.MolFromSmiles('O=C(N[C@H]1CCCc2ccccc21)c1n[nH]c2ccccc21',sanitize=False)\n", + "m.UpdatePropertyCache()\n", + "Chem.FastFindRings(m)\n", + "ri = m.GetRingInfo()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "((12, 11, 10, 9, 8, 7, 6, 5, 4, 3),\n", + " (12, 11, 10, 9, 8, 7),\n", + " (21, 20, 19, 18, 17, 16, 15, 14, 13),\n", + " (21, 20, 19, 18, 17, 16))" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ri.AtomRings()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\ngg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Draw.MolToImage(m,highlightAtoms=ri.AtomRings()[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There's an extra bond highlighted in the above drawing (the fusing bond). This is a limitation of the way atom highlighting is handled in drawings: all bonds between highlighted atoms are highlighted.\n", + "\n", + "We can avoid the problem by highlighting bonds instead:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Draw.MolToImage(m,highlightBonds=ri.BondRings()[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Draw.MolToImage(m,highlightBonds=ri.BondRings()[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Why symmetrize the rings?\n", + "====\n", + "\n", + "This is an old problem...\n", + "\n", + "Use a classic example: cubane only has five smallest rings." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mb=\"\"\"\n", + " Mrv0541 09231207052D \n", + "\n", + " 8 12 0 0 0 0 999 V2000\n", + " 0.4714 0.2946 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0.4420 -1.0607 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 1.7679 0.3241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 1.7973 -1.0902 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n", + " -0.4479 -0.4184 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 1.1432 -0.4184 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 1.1137 -1.9800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n", + " -0.4479 -1.9800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 1 2 1 0 0 0 0\n", + " 1 3 1 0 0 0 0\n", + " 3 4 1 0 0 0 0\n", + " 4 2 1 0 0 0 0\n", + " 1 5 1 0 0 0 0\n", + " 5 6 1 0 0 0 0\n", + " 6 3 1 0 0 0 0\n", + " 6 7 1 0 0 0 0\n", + " 7 4 1 0 0 0 0\n", + " 5 8 1 0 0 0 0\n", + " 8 7 1 0 0 0 0\n", + " 8 2 1 0 0 0 0\n", + "M END\n", + "\"\"\"\n", + "m = Chem.MolFromMolBlock(mb)\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m2 = Chem.MolFromMolBlock(mb,sanitize=False)\n", + "m2.UpdatePropertyCache()\n", + "Chem.GetSSSR(m2)\n", + "m2.GetRingInfo().NumRings()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAN8klEQVR4nO3df0yVZR/H8Q+IiBZi\nRWa1/mnpXJvVEldatmkyRxMfBmSIRaQy+qGDUSueSWuuFUqmaw2yhkun6TMHaRrqpk5TpzwSmstk\nNcvkcaBTy1AEPOd4nj9OKJro4XB+fTnv1z8e5D7Xudjcm+u6z31uo9xut1sAYEB0qCcAAN4iWADM\nIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwg\nWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBY\nAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgA\nzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADM\nIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwg\nWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBY\nAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgA\nzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADM\nIFgAzCBYAMyICfUEEAFcLqmlJXCPExOlt94K/M+BkCNY6JXLhw4pOj3d84XTKZ0/73ncNSgB1C7p\ng0GD9O+4OA2aPVuKiwv4ayJ0otxutzvUk4BNK999V4s+/VS1f/2lgcF4wehoKSHhymN3QoJmNDVp\nf3u7aiUlnjwp3XNPMGaCEGGFhR67ePGi8vPztbG6Wiva2jQwKkp6+22pXz9p8GDPQV0fXxcanx9f\np2TePG0rL9d/29uVKEmXLvn9Z0V4YYWFHvn111+VmZkpp9Op6n/9SyM++MCzDWtrC+o8KisrNWfO\nHG0tLdX4oqLOyUkPPhjUeSC4eJcQXvv666/1+OOPa+TIkdq3b59GDBni+UZsbFDnsXPnTr3xxhta\n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\n2B9//KFJkyYpMTFRVVVViu3lrY590d3N+0pKSnT06FEdOHBA0dH8XoUHwYpQLS0teu6555SQkKBv\nv/1WA29yR9BAulGw1q1bpyVLlui7777T0KFDQzIvhCd+dUWgCxcuKCUlRW63Wxs3btSgQYNCNpfr\ng/Xbb79p5syZ+vDDD/Xkk0+GbF4IT6ywIkxbW5vS0tLU0dGh7du3a/DgwSGdT9dgtbW1KT09Xc8+\n+6yKiopCOi+EJ4IVQTo6OpSWlqZTp05px44dSkhICPWUrglWYWGhOjo69OWXXwblGjDYQ7AihMPh\nUFZWlk6cOKEdO3YoMTEx1FOSdPVdwuXLl2vVqlWqra1VfHx8qKeFMEWwIsT06dP1448/ht2JbIfD\nIZfLpddee03l5eUaNWpUqKeEMEaw+ji32y2Xy6Vdu3apoqJCjY2NamxsDPW0rjh06JBOnDihGTNm\naObMmaGeDsJclNvtdod6Egic06dPa+zYsfr999/D8ryQ2+1WcnKyqqqquL8VbolgATCD67AAmEGw\nAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAA\nmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACY\nQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhB\nsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGw\nAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAA\nmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACY\nQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhB\nsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGw\nAJhBsACYQbAAmEGwAJjxfyGuw8vVtwHcAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAN5klEQVR4nO3daWxU5R7H8V+niy22\nVLGoicGNyE00ghgRxQAiNKVEoanIppBaUkUUqTUYXlSNMUHFBIKmFQmJrIZg3Vg1V1MKemXR1i02\nTYACIkRZJF0o7Uw798WhLVuhnc727/l+EpIzYebMQ2K+Ps+ZM8/E+P1+vwDAAE+kBwAAnUWwAJhB\nsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGw\nAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAA\nmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACY\nQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhB\nsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGw\nAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAA\nmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACY\nQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhBsACYQbAAmEGwAJhB\nsACYQbAAmBEX6QHABZqbpZqa0By3tEhpadIrr4Tn34KIIlgIXGWlVFUlvfyy89jnk2prneNz4xJi\nxxMSdGToUA0cOTIs74fIifH7/f5IDwIGLV8uzZmj2rg4pdTVhec9PR4pNbX9WJJOnJAk/e+hhzTs\nu+/CMw5EDDMsdI3XK82bJy1ZIkmK83i07/771X/UKCk2Vurd23neuccXhibQ43OtWydNmyZJqurT\nR/8dPlzDgv1vRdQhWOi86mpp4kSpvNx5PHCgsk+f1tTnn1f/GTPCN47du6XcXMnvl/r318K77lJf\nFgquwKeE6JyvvpKGDGmP1cyZ0q5d2hcTo/j4+PCN488/pawsqaHBmXlt2KAzyclqamoK3xgQMQQL\n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\nXezkyZMaM2aM0tLSVFJSEpTdQ7uqo837CgsLtXfvXpWXl7ftiQUQLJeqqanRuHHjlJqaqk2bNikp\nKSki47hUsD7//HMtXrxYZWVluv766yMyLkQn/tflQnV1dcrMzJTf79fGjRvbdgGNhAuDtX//fuXm\n5mrBggV64IEHIjYuRCdmWC7T0NCgrKwsNTY26ttvv434Lp3nBquhoUHZ2dkaPXq0CgoKIjouRCeC\n5SKNjY3KysrS33//rdLS0ov2Ro+Ec4OVn5+vxsZGffTRR2G5Bwz2ECyX8Hq9mjJlig4fPqzS0lKl\npaVFekiS2j8lXLFihdasWaOdO3cqJSUl0sNClCJYLjF16lT99ttvUXch2+v1qrm5Wc8995yKiop0\n9913R3pIiGIEq4fz+/1qbm7W9u3bVVxcrEOHDunQoUORHlabX375RYcPH9aTTz6p3NzcSA8HUS7G\n3/rTJOiRjh07pgcffFAHDhyIyutCfr9f6enpKikpYX8rXBHBAmAG92EBMINgATCDYAEwg2ABMINg\nATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2AB\nMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEw\ng2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCD\nYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINg\nATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2AB\nMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEw\ng2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCD\nYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINg\nATDj/xbc2aGqVCJBAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAANyklEQVR4nO3df2hV9R/H8dfufvpj\nmxZZFAbKl4pA+mFLDTPKTC0SW1PXsliaqYlsGZKwUUnRYlHDoqEyaZoVobKtmBYIpiVOh8tkIvRd\ny0xGX2tm+6Fu9273+8fxbjN1bvfe3d33zvMB4T3r3nM/QTz9fM45OyfG7/f7BQAGeAZ7AADQVwQL\ngBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuA\nGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZ\nBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkE\nC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQL\ngBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuA\nGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZ\nBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkE\nC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQLgBkEC4AZBAuAGQQL\ngBkEC4AZBAuAGQQLgBlxgz0AGHb8uFqbm3WgqUmS1NHRoaYIv/b7/YqJiVFlZaWmTJkSif9qDCKC\nheCUlEgrVighLk7LfT41jhih2NhYpaSkSFKfXns8HqWmpkqS4uPjNX78+Mt+3tvrlJQUFRQU6MCB\nA6qoqCBYLkCw0D9er7R6tbRunSQpvr1d//V4pDNnIj6UvLw81dbW6sEHH1R8fHzEvx+RxzEs9N2v\nv0qTJ3fFSjff7PyZkBDxoZSUlOj999/Xjh07NGrUKHm93oiPAZFHsNA333wjpaVJNTXO9uLF0sqV\nzusIB+u7777TihUrtH79+q7ZVXt7e0THgMFBsNC7zk5pzRrp8celxkZp2DBp82bnGJbf77wngsux\n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\nr7q6OtXU1HTdEwsgWG4UiFVZmbOdmSmVljoXiEbYlYJVVlamoqIi7d27V2PGjIn4mBC9+KvLbTo7\nneuqtm93tufMkbZscX71ZhD8O1j19fVatGiR3nnnHU2ePHlQxoToRbDcxO+XXnpJ2rzZ2X7iCWnb\ntpAfIhGKnsE6f/680tPTNX36dK1atWrQxoToRbDcJDdX2rTJef3II06sQnyARKh6Bis3N1dtbW36\n5JNPFBPhY2mwgWNYbvHDD90XhU6bJn39tTRs2KAOSeo+S1haWqqtW7eqqqpKycnJgz0sRCmC5RaB\nWN1/vxOri0+vGWxer1cdHR1avny5Pv74Y02YMGGwh4QoRrCGutZW/SLptCSNGye9+aZ07NjgjqmH\nn376SadOndKzzz6rRYsWDfZwEOVi/IFHk2BoqqjQi6+8os0nTgzamcDe+P1+zZgxQ9u3b+f+Vrgm\nguUWTU0Sz+2DcQQLgBlc1gDADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIF\nwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXA\nDIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAM\nggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyC\nBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIF\nwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXA\nDIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAM\nggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyC\nBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXAjP8DGwrDOXQO/UsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAANpElEQVR4nO3df2hV9R/H8dd0u5tp\ny8TIhCD6ptkgqFyKzAItTS2HbWZrlUmuBi2b5B/NZvWFgqG5wgr7wcx+mCtrTpEt+wUl2fpuWCtW\nA3FlFlNT2VzOH7t33u8fn64iul93d/fe987zAcG5855zP5E8+3zOzjk3IRgMBgUABgyJ9QAAoLcI\nFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgW\nADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYA\nMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAz\nCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMI\nFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgW\nADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYA\nMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAz\nCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMIFgAzCBYAMwgWADMI\nFgAzCBYAMwgWADMIFgAzEmM9ANh29OhR1dXVSZI6OzvV1tYW1e1gMKiEhARVVVVpypQp0fhXRgwR\nLITt/fff19KlS9XR0aGkpCQNHTpUqampktSr7SFDhuiSSy6RJCUlJenqq68+7+fdbaempqqkpEQ1\nNTXaunUrwfIAgoU+O378uPLz87Vt2zaNGjVKTz/9tPLy8qI+juLiYjU0NOiWW25RUlJS1D8f0cc5\nLPRJU1OTMjIyVF9fr9raWg0bNkw+ny/q4ygrK1NpaakqKio0cuRI+f3+qI8B0Uew0GubN2/WTTfd\npAkTJqimpkbjx4+X3++P+uzm66+/VkFBgd54440zs6uOjo6ojgGxQbDQo87OThUVFSk3N1cvvvii\n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\nUKwqK93rnBzpnXdicvPwecFqapIefpibmnFB/E3wmtOn3XVVn3ziXmdmSu+9584TxcA5wTpx4uxN\nzT4fNzXjPATLS4JB6dFHpXffda/vvFP6+OOY/ubtnGBxUzN6QLC8ZOnSszcOT5/uYhWBb73pjzPB\nWr/e3a8ouavalyyJ6bgQnwiWVyxbJr3yitu+9VZ35Xg332QTLYFAQImdndJjj7kfpKW5k//ABfCI\nZC84fVp66SW3PWmSi9VFF8V2TP/yt7Upaf9+9+z31FT32OMRI2I9LMQpgjXY/fST/hv6UoeUFHcL\nTgQebRwpc/fu1dbQt+isWSNde21sB4S4lhAMBoOxHgQGzqFDh9Q2aZL+s3dvrIfSpf/NnKnJ48ZJ\nr70W66EgzhEsL9iwwd1EHOMT7F0qKpLGjuV6K/SIYAEwg/+lATCDYAEwg2ABMINgATCDYAEwg2AB\nMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEw\ng2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCD\nYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINg\nATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2AB\nMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEw\ng2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCD\nYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINg\nATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATCDYAEwg2ABMINgATDj/1W02cr4\n0loKAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[3])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAN4klEQVR4nO3dfUyVdR/H8Q9wePKJ\nNMqt1sqWZG7q7sZy5vrDB6Y1H5gYoU1vH2CwTDP/6WHYdq8tI7VmTQ2nbWWpGWINTVs5H7Lc0NJK\nZTUZaSUyM/FMRIHDuf+4QCBF4XA453y53q9/+gHH6/xc7L3f7/Jc1xXl9/v9AgADosM9AQDoKIIF\nwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXA\nDIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAM\nggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyC\nBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIF\nwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXA\nDIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAM\nggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyC\nBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIF\nwAyCBcAMggXADIIF2xoaJJ8v3LNAiHjCPQHYdunSJR0+fFiS5PP55PV6QzreePmyhsbEaNCyZVJe\nnpSQEIq/NsIkyu/3+8M9Cdi0ceNGLV68WHV1dYqNjVVMTIz69esnSR0aR0dHKykpKeDxsK+/Vkph\nYcuEzp2TBg7s5r81wokVFjrtypUrys3NVUlJiQYMGKBXX31V2dnZoZ3Eli3SunVtv1dXF9o5IOQ4\nh4VOKS8v1+jRo3Xs2DGVlpYqMTFRcXFxoZ1Eaak0b57k90v33NPy/fr60M4DIUew0GHFxcV69NFH\nNWTIEB06dEgpKSmqr69XbGxs6Cbxxx9SerpUWyslJUnLlrX8jGD1eAQLt+Xz+fTyyy9r5syZWr58\n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\njPPzpXHjQjsvRCSC5WL//POPxo8fr+TkZBUVFXX97qGBuNmWcPt2qaDAGU+cKL32WujnhYhEsFzK\n6/XqqaeeUlJSknbs2KHExMTwTOTfwSovl+bN46Jm3BS/CS50+fJlPfnkk/L7/SopKbl+F9CwaB2s\n2tqWi5rj4rioGTfgflguU1tbq/T0dF27dk179uy5fivjsGl90p2LmnEbBMtFrl27pvT0dFVVVWnv\n3r033hs9HJpPuv/0k1RU5IxnzZIWLgzfnBCxCJZL1NfXKysrS3/++af27t2r5OTkcE/J0bzC+vxz\n579Dh0pr1oRtOohsBMslZsyYoV9++UX79+/X3XffHe7ptGgOVkODc1FzcbHU9JQd4N8IVg/n9/vl\n8/l04MABrVmzRmfOnNGZM2fCPa0WdXUaLqm3JK1aJT38cJgnhEgW5W9+NAl6pPPnz2vUqFH6/fff\nQ3NtYGc1Nqp05Ej9Z9CglgdKAO0gWIgMjY183gq3xW8IIgOxQgfwWwLADIIFwAyCBcAMggXADIIF\nwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXA\nDIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAM\nggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyC\nBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIF\nwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXA\nDIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAM\nggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyC\nBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXADIIFwAyCBcAMggXAjP8D\nyHKs25tmbCEAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Draw.MolToImage(m2,highlightBonds=m2.GetRingInfo().BondRings()[4])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The front face is being missed.\n", + "\n", + "Isn't this all nitpicking though? Does it actually matter?\n", + "\n", + "It does if you want to ask questions about ring membership:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "((0,), (1,), (2,), (3,))" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m2.GetSubstructMatches(Chem.MolFromSmarts('[R3]'))" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nAUolwp+NosKkAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The symmetrization algorithm (run by default) solves this problem:" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Chem.GetSymmSSSR(m2)\n", + "m2.GetRingInfo().NumRings()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "((0,), (1,), (2,), (3,), (4,), (5,), (6,), (7,))" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m2.GetSubstructMatches(Chem.MolFromSmarts('[R3]'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Stereochemistry Handling\n", + "=====\n", + "\n", + "### Stereochemistry information that doesn't make sense is removed:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'CC(C)F'" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Chem.CanonSmiles('C[C@H](F)C') # <- two identical atoms" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'C=CC'" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Chem.CanonSmiles('C/C=C') # <- only substituted on one side" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### CIP codes are assigned" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles('C[C@](F)(Cl)Br')\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'S'" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m.GetAtomWithIdx(1).GetProp('_CIPCode')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### As are Z and E labels for double bonds:" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n6gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles('C/C=C/C')\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "rdkit.Chem.rdchem.BondStereo.STEREOE" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m.GetBondWithIdx(1).GetStereo()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAYAAABNcIgQAAAHr0lEQVR4nO3dT4hVdR/H8e/kI7pw\nJU6IA5KEfzJkEDUnUAkGCgJNDEGCUcyFaEGgjRqlGwdMCAyysEUx1ggSiWgUuNBAw0kUHUVJR1w4\nMIEZ+AeJCfXeZ1HwWIxmPHp/d/i+Xtt7Fp/N5c0599xzGqrVajUAIKknSg8AgJKEEIDUhBCA1IQQ\ngNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA\n1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDU\nhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSE\nEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDU/lN6AAw1t2/fjosXL5aeMaiJ\nEyfG8OHDS8+AIUUI4V+4c+dOLF26NHbv3l16yqCWLFkSXV1dMWzYsNJTYMgQQvgXtm/fHocPH44r\nV67EqFGjSs/5i1u3bsX06dNj+/bt8dZbb5WeA0NGQ7VarZYeAUPB1atXY9KkSfHhhx/GsmXLSs8Z\nVGdnZ6xZsyZ6e3tjzJgxpefAkCCE8JBWrVoVp06diu7u7mhoaCg9Z1DVajVaWlpixowZ8cknn5Se\nA0OCEMJDOH36dMycOTOOHDkSLS0tpec80I8//hhz586NEydORHNzc+k5UPeEEP5BtVqNefPmxYQJ\nE+KLL74oPeehtLW1RX9/fxw6dKj0FKh7Qgj/4Ouvv47ly5fH+fPno6mpqfSch9Lf3x9TpkyJzs7O\nePXVV0vPgbrmD/XwAL/99lusWbMmNmzYMGQiGBHR1NQU69evj/b29hgYGCg9B+qaM0J4gI6Ojti5\nc2ecPXs2RowYMegxt27dir6+vhov+8P48ePv+zeOgYGBmDp1aqxYsSLefffdGi+DoUMI4T76+vri\nmWeeiS+//DIWLVp03+O++eabWLBgQQ2X/c/+/ftj/vz59/18z549sXTp0vjpp59i/PjxNVwGQ4cQ\nwn20tbXFL7/8EgcOHHjgcXfv3o3ff/+9Rqv+asSIEf/4FJkXX3wxxo4dO2Ru9IFaE0IYxJEjR6K1\ntTV6enpi6tSppef8X86dOxfTp0+PQ4cOxZw5c0rPgbojhPA3lUolZs2aFS0tLfHxxx+XnvNIrF69\nOo4dOxbHjx+PJ55wjxzcyzcC/mbnzp1x+fLl2Lx5c+kpj0xHR0dcvnzZ5VEYhBDCPW7cuBHvvPNO\nbNq0KUaPHl16ziMzevTo2LhxY2zYsCFu3rxZeg7UFSGEe2zZsiWefPLJWL16dekpj9wbb7wRjY2N\nsWXLltJToK74jRD+1NvbG9OmTYvvvvsuWltbS895LA4ePBgvv/xynD17NiZOnFh6DtQFIYQ/LVy4\nMKrVauzbt6/0lMdqwYIFMWzYsNi7d2/pKVAXhBAi4sCBA/HKK6/EuXPn4umnny4957G6dOlSPPvs\ns7Fv37546aWXSs+B4oSQ9G7fvh3Nzc0xf/782Lp1a+k5NbFu3br49ttvo6enJ4YPH156DhTlZhnS\n27FjR1y/fj3ee++90lNqZuPGjXHt2rX49NNPS0+B4pwRktqvv/4akyZNig8++CBef/310nNq6rPP\nPov29vbo7e2NMWPGlJ4DxQghqb355ptx/Pjx6O7uTvfElUqlEi0tLTF79uz46KOPSs+BYoSQtM6c\nORMzZsyIw4cPx/PPP196ThHd3d0xb968OHnyZEybNq30HChCCEmrtbU1xo4dG7t27So9pajXXnst\nrly5EgcPHiw9BYoQQlLau3dvtLW1xYULF4bUm+cfh/7+/pg8eXJ0dXXFwoULS8+Bmsv1owjEH29u\nf/vtt2P9+vXpIxgR0dTUFOvWrYu1a9fGwMBA6TlQc0JIOtu2bYtKpRLt7e2lp9SN9vb2qFQqsW3b\nttJToOZcGiWVn3/+OSZPnhyff/55LF68uPScuvLVV1/FihUr4sKFCzFu3LjSc6BmhJBUli1bFn19\nffH999+XnlKXXnjhhXjqqaeis7Oz9BSoGSEkjWPHjsWcOXPixIkT0dzcXHpOXerp6YlZs2bFDz/8\nELNnzy49B2pCCEmhUqnEc889FzNnzowdO3aUnlPXVq5cGWfOnImjR49GQ0ND6Tnw2LlZhhS6urri\n0qVLsXnz5tJT6l5HR0ecP38+urq6Sk+BmhBCUhg5cmRs3bo1GhsbS0+pe42NjfH+++/HyJEjS0+B\nmnBpFIDUnBECkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhAC\nkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQ\nmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCa\nEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQApCaEAKQmhACkJoQ\nApCaEAKQ2n8BfbT5OHhJF/gAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles(r'C/C=C\\C')\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "rdkit.Chem.rdchem.BondStereo.STEREOZ" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m.GetBondWithIdx(1).GetStereo()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dependent stereochemistry is handled properly:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nXlVVpeXLl2vy5Mnq3Lmz0tLStGrVKt5RdIXhtrVnzx6bNm2axcbGmqR6H4GBgfbGG2+YmVltba0V\nFBRYQUGBPfvssybJZs+ebQUFBbZ+/XozM6usrLScnBxr27atjRgxwoqLi718ao1SXFxsI0aMsLZt\n21pOTo5VVlaamdn3v/99e+655ywnJ8fmzZtnL7zwgoWEhFhsbKyVlZWZmdkbb7xhgYGBV3w+u3bt\natOmTbO9e/d6+dRwAwTrNnPixAnLycmxwYMHX/FNdfkjNDTUli1bVnebqqqqa247ZsyYevd/9OhR\nS09Pt5YtW1p6enrdN7ILysrK6mbPyMiwkydP1lv/6quv2uDBgy0yMtKCg4MtNjbW0tPT7dixY/W2\nW7ZsmYWGhl7zczZ48GDLyclx6nNzpyBYt4Hz589bfn6+paSkWEhIyDW/kSRZbGysffLJJ41+zI8/\n/tgSExMtOjracnJyrKqqygfPpGlUVVVZTk6ORUVFWWJion388ceNvs+ioiK76667rvu5DgkJsZSU\nFMvPz7fz58/74JmgsQiWR2pra62wsNBSU1MtMjLyut84X//JX1pa6tMZli1bZt26dbPevXvbihUr\nfHbfvrJixQrr3bu3devWzf71r3/59L6PHDly3VeyX/+IjIy01NRUKywstNraWp/OgZtHsJrZ9Y5L\nXe9j/Pjxdu7cuSaZ6fz585adnW3h4eGWkpJi+/bta5LHuRX79u2zlJQUCw8Pt+zs7CZ7hXPu3Dkb\nP378LX0tYmNjbdq0abZnz54mmQnXRrCawc0cl7rex4wZM5rlp/rhw4ctNTXVQkJCLCMjw7766qsm\nf8xv+uqrrywjI8NCQkIsNTXVDh8+3OSPWVtbazNmzGjQ1+by8a4TJ040+ZwgWE1u+/btFhQU1KBv\nhlatWtmSJUuafeaioiK7//77LSYmxvLy8qympqbJH7Ompsby8vIsJibG7r//fisqKmryx/ymJUuW\nWKtWrRr0tQoKCrLt27c3+8x3GoLVxNauXdugb4BOnTrZxo0bPZu7pqbG8vPzrVOnTjZ48OC60yOa\nwrp162zw4MHWqVMny8/Pb5ZAXsvGjRutU6dODfqarV271rO57xScOHobGjhwoLZu3aqEhATPZggM\nDFRaWpr27dunlJQUPfzww5o0aZIOHTrks8c4dOiQJk2apOTkZKWkpGjfvn1KS0vz9HI5CQkJ2rRp\nk/r16+fZDLg2guUDZWVlSk1NVXR0tMLDw/XII49o165dDbqvkSNHavXq1erSpYuPp2yY8PBwZWVl\nqbi4WJLUt29fZWVlqaKiot5248aNu+rliQMCAur9h2RJqqioUFZWlvr27StJKi4uVlZWlsLDw5vn\nSd1A9+7d9Z///EcjRoxo8H2sWLFCw4YNU3h4uCIiIpSQkKCPPvrIh1Peobx+iee6yspKu/feey0m\nJsbmzZtnS5cutf79+1vHjh3t+PHjt7RLOG3aNKuurvb6KV1XYWGhxcfHW5cuXSw/P7/uzYCNGzfW\nnW1/+SM7O7vuTQOz/z+4nZ+fb126dLH4+HhbtWqVh8/kxqqrq23atGm3vEv45ptvmiRLTk621157\nzfLy8mzKlCn297//3eNn5D6C1UgLFiwwSfbvf/+7btnhw4ctJCTEXnrppZsKVkhIiM2dO9fDZ3Fr\nKisrLS8vz9q3b29JSUnX3O7Xv/61BQQE2IEDB8zMLCkpydq3b295eXm39Ymq3zR37lxr0aLFTQXr\n888/t1atWllmZqbXY/slgtVIEyZMsM6dO1+xfPTo0dajR48bBqtDhw62bt06DyZvvFOnTllGRsZV\n19XU1FjXrl1t2LBhdcsyMjLs1KlTzTWeT61bt846dOhww2BNnz7dQkJC7PTp02Zmnr6B4I84htVI\nO3fuvOoB2vj4eB04cECVlZXXvG2fPn20adMmJSYmNuWITSY6Olq5ublXXbdmzRp98cUXevbZZ+uW\n5ebmKjo6upmm863ExERt2rRJffr0ue5269evV//+/bV48WLFxsYqKChIcXFxmjlzJleE8AGC1Uhf\nfvmloqKirlgeFRUlM1N5eflVbzdmzBj997//VY8ePZp6RE8sWLBAYWFhmjhxotej+EyPHj20YcMG\njRw58prbHD16VHv27FFWVpamT5+uDz74QCNGjNBLL73EFU99gGB5ICMjQ++++67atGnj9ShNory8\nXP/4xz80YcKE2+adP1+JiorS+++/r5/+9KdXXV9bW6vy8nLNnTtX6enpGjVqlObPn6/hw4frT3/6\n0x1x9demRLAaKSoqSmfOnLli+enTpxUQEFDvG7ZFixbKy8tTbm6ugoKCmnHK5lVQUKALFy7U2x30\nJ8HBwZo1a5by8vLUokWLeuvatWsnSXr44YfrLU9OTtaZM2d8eh7bnYhgNVK/fv20c+fOK5Z/+umn\n+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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles('C[C@H]1CCC[C@@H](C)[C@H]1C')\n", + "Draw.MolToImage(m,includeAtomNumbers=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('S', 'R', 'S')" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m.GetAtomWithIdx(1).GetProp('_CIPCode'),m.GetAtomWithIdx(5).GetProp('_CIPCode'),m.GetAtomWithIdx(7).GetProp('_CIPCode')" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\neHg41q1bh6CgINTX19+1zpYtW1BaWuqIe1xcHHx9fbFv3z5ERUUB+GLv7KtuKw8gygPr5MmTXLx4\nMUNDQwmg0aVVq1Z88803SZINDQ3My8tjXl4e58yZQwBctWoV8/LyuG/fPpKkzWZjRkYG/fz8OHbs\nWBYVFVm5aU1SVFTEsWPH0s/PjxkZGbTZbCTJJ554gs888wwzMjK4Zs0avvDCC/Tw8GBoaCjLyspI\nkvX19bTb7YyIiGBeXh5JcuXKlXz22Wcd18uDS8F6wFy9epUZGRmMiIi4K1JfXry9vfnuu+86blNX\nV3fPdcePH9/o/ktLS5mYmEhPT08mJiY6fpFNUFZW5pg9KSmJ165da3T9smXLGBERQX9/f7Zu3Zqh\noaFMTEzk5cuXG613+PBhxsbGkiSvX7/OoKAg/uc//yFJzp8/n2+88QZJ0m63N/9GybeiYD0Aqqqq\nmJOTwwkTJtDDw+Oe8QHA0NBQHj58uMmP+fHHHzMyMpKBgYHMyMhgXV2dE7akedTV1TEjI4MBAQGM\njIzkxx9/7LT7njdvHhMTE0mSx48fZ3BwMP/73/+SJGNiYrhnzx6SiteDQsGySENDA3fu3Mn4+Hj6\n+/t/baS+vERERLCkpMSpM7z77rvs3r07+/Tpw61btzrtvp1l69at7NOnD7t3786///3vTr3vuro6\nxsTEOPYyo6OjuWLFCpLk5s2b2bdvX9psNlZVVbFfv35O/beX70bBamFfd1zq6y5Tp07l7du3m2Wm\nqqoqpqWl0dfXlxMmTOBnn33WLI/zbXz22WecMGECfX19mZaWxqqqqmZ9vPfff599+/ZlXV0da2pq\n2LNnT27fvp0kmZqaymnTppEkL168yGHDhj3Qe6SuTMFqAfdzXOrrLikpKWxoaGj2OS9evMj4+Hh6\neHgwKSmJt27davbH/F+3bt1iUlISPTw8GB8fz4sXL7bI4/75z3/mjh07SJJLly7lxIkTSZIXLlxg\nYGAgz549S5KcOXMmU1NTSZJ79uzhU0891SLzyRcUrGZ29OhRuru7f6dQeXl5cePGjS0+c0FBAR97\n7DGGhIQwKyurRY7f2O12ZmVlMSQkhI899hgLCgqa/TG/yqVLlxgYGMjTp0+TJH/2s59xyZIlJMn9\n+/ezW7durKqqYn19PQcOHMj169eTJNeuXcsLFy5YMvP3iYLVzHbv3v2dYhUcHMyPPvrIsrntdjtz\n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\nABUEhV8Mk4IhAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles('C[C@H]1CCC[C@H](C)[C@H]1C')\n", + "Draw.MolToImage(m,includeAtomNumbers=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles(r'C[C@H](F)/C([C@H](F)C)=C\\Cl')\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('S', 'R')" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m.GetAtomWithIdx(1).GetProp('_CIPCode'),m.GetAtomWithIdx(4).GetProp('_CIPCode')" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'C[C@@H](F)/C(=C/Cl)[C@H](C)F'" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Chem.MolToSmiles(m,True)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAYAAABNcIgQAAAUwklEQVR4nO3dfVSUVeIH8O/AAIKK\nSggIghQqIJQe0fUtNa0NOWvHTA1NTdHNXZUEQYypRVMLO6S8+LJHUUvFTFnxbevsMbdViUU6Iqai\nQGakJBIqLxKIwHB/f+wvFlYd3maeOzDfzzn8MQ93hq8e8Tv3Ps9zRyWEECAiIjJRZrIDEBERycQi\nJCIik8YiJCIik8YiJCIik8YiJCIik8YiJCIik8YiJCIik8YiJCIik8YiJCIik8YiJCIik8YiJCIi\nk8YiJCIik8YiJCIik8YiJCIik8YiJCIik8YiJCIik8YiJCIik8YiJCIik8YiJEV9W/ktAn8MhPMl\nZ1hmWcL+oj0CrgUgpTSlYcwHtz9AtwvdJKYkIlOilh2ATMeW4i0IKQiBt7U3Qh1C4W7ljnJtOb6+\n/zUC8wNx1OwoJveYLDsmEZkYFiEp4mzlWYQUhGBqr6k48PQBqFX//af3lv1buPTgEmpFrcSEpA9X\nrlxBt27d0K9fP9lRiFqMS6OkiJiiGFiZWSHRLbFJCf7mOevn4GfjJyEZ6dO5c+cwbNgwrFq1CpWV\nlbLjELUIi5AU8a+Kf2Fct3GwU9vJjqIYrVaL2lrTmuXOnz8fubm5KC8vxzPPPIOEhARotVrZsYh0\n4tIoGVy5thz3tffxtNXTrXpeVX0VTlec1ksGiyoL1F7QTynZ2NjghRdeaHbc9OnT4efnh7/85S96\n+bnG7vPPP8edO3ewePFiJCQkIDAwEKGhoTh48CASEhIwfPhw2RGJHotFSEaruK4Y83+ar5fX8q7x\nRs78HL28lq2tLSZOnIjExESd44KCgjBz5kzMmTMH7u7uevnZxmzIkCEIDQ3F9u3bERcXh5dffhkZ\nGRnYu3cvpk6dipdeegnR0dFwdnaWHZWoKUGkANsLtsL/e/8WjV1XuE50zepq4ERt98MPPwgrKytx\n4sSJZsdOmjRJBAYGKpDKeBw/flwMGDBAvPLKK+L7778XQghRUVEhNBqNsLe3F9HR0eLBgweSUxL9\nF88RkiImdp+I1F9TUVJXIjtKu3l4eCA4OBjLly9HXV2dzrGxsbE4fPgwzpw5o1A6OdatW4eFCxei\nqKgIr7zyCrKzszF27FiMHj0aK1euRH19PaKjo/Htt98iMzMTgwYNQkpKSvMvTKQAFiEpYqXTSjys\nf4hFNxehTjxaHpceXML5qvMSkrXN6tWrUVJS0uzyqLe3NxYvXozQ0NBOfdFISEgI7O3t8eyzzyIm\nJgZCCERERCA7Oxv37t2Dl5cXPvnkE7i7uyMlJQW7du3C2rVrcfr0adnRibg0SsrZ9MsmocpUCd8r\nviKmKEYklySLxDuJYuaPM4X5eXPxRdkXQgjjXxr9TWJiorCzsxN3797VOa6kpETY29uLxMREhZIp\nq/Ey57Vr18SUKVNE//79xdGjRxuOZ2ZmijFjxgg/Pz+RlpYmhBCirq5O8axEj8MiJEWd/fWsmHF9\nhnC66CTU59Xiqe+eEgHXAsTR0v/+p9lRilCr1Yphw4aJkJCQZsdu3bpVODg4iNLSUoPnUppGoxEv\nvviiuHTpUsOxr776Svj4+IiXXnpJZGdnCyGEqK+vF/v37xeurq5ix44dsuISPYJFSNQOaWlpQq1W\ni8uXL+scV1dXJ5577jkRHh6uUDLl1NbWiq1btwpHR0exePHihhlybW2t2Lx5s3BwcBDBwcHi3r17\nQgghKisrO+UbAuq4eI6QqB3GjBmD1157DaGhoTrHmZubIz4+Hps3b0ZeXp4y4RRw8+ZN1NTUYMmS\nJcjJyYGFhQUGDRqEhIQECCEQHByMnJz/3Lbi7e2N5ORk2NjYoGfPnnKDEzWiEkII2SGIOrKCggJ4\neXnh4MGDmDxZ96bh06ZNw8OHD/HFF18olM6wPvjgA+zYsQMfffQRZs6cCZVKhZycHCxfvhw3b95E\nbGwsJk2aBOA/+5BWV1fDz49b6ZFxYRES6cHq1avx2Wef4cqVK7CysnriuPz8fAwaNAiHDx9GQECA\nggkNJysrC6GhoaisrERcXBzGjRsHADh16hRCQ0Px1FNPIS4uDoMHD5aclOjxuDRKpAeRkZGora3F\n5s2bdY57+umnERYWhrCwsA6/D+m///1v/Pjjjxg6dChOnz6N4OBgzJo1C/Pnz0dhYSEmTJiAc+fO\n4Q9/+ANOnDghOy7RE7EIifTA2toa0dHRWLt2LW7fvq1zrEajwf3797FlyxaF0hnG1atXMWLECLz3\n3nuoqqpCUFAQcnNz4ezsjMGDByM6Ohr19fUIDw/HypUrZccleiIujRLpiRAC48ePh6enJ3bs2KFz\n7N69e/H2228jLy8PTk5OCiXUv8LCQkRGRuLUqVNYv349Zs+eDZVKhfz8fERERMDa2hpJSUmyYxLp\nxCIk0qOsrCyMGDECZ8+exbBhw544TgiBUaNGYciQIdi2bZuCCfUjOTkZzs7OeP755wEAGRkZWLZs\nGdRqNTZt2tTwZ6+urkaXLl1kRiVqFpdGifRo6NChmDNnDkJCQqDrPaZKpcLWrVuxa9cunD/fcbaW\n+41arcbs2bMRGBiIn376CSNHjkRGRgbeeustTJkyBeHh4QDAEqQOgTNCIj375ZdfMHDgQCQmJiIw\nMFDn2Hnz5uH69ev45ptvoFKpFEqoHw8ePMCGDRuwadMmLFq0CBqNBt26dcP9+/dx+fJljBkzRnZE\nohbhjJBIzxwdHaHRaLBixQpUVlbqHBsTE4PLly/j0KFDCqVrv6ioKGzbtg2WlpaIiorCd999h1u3\nbsHT0xOffPIJbG1tWYLUobAIiQwgLCwM1tbW2Lhxo85xjo6OeOeddxAeHo6qqiqF0rXPjBkzkJyc\njKFDh+LUqVNwcXHB7t27cezYMRQVFcmOR9RqXBolMpCjR4/ijTfeQE5ODvr16/fEcTU1NfD19cXc\nuXMRFRWlYMLW02q1MDc3BwCkpKQgIiICQ4cOxYYNG+Du7i43HFEbsQiJDMjf3x/29vb47LPPdI47\nfPgw5syZg9zcXLi5uSmUrvVmz56N7t27Y926dejduzeqq6uxceNGHD58GOfOnYOZGReZqONhERIZ\n0NWrVzFkyBB8/fXXGDt2rM6x/v7+6N27N/bt26dQutYrKyvD2rVrsW/fPkRGRuLtt9+GhYVFk5ki\nUUfDIiQysODgYKSnpyMzM1PnjKk1pSnD7du34eTkBJVKhby8PISFheHGjRvIysqCpaWl7HhEbcYi\nJDKw0tJSDBgwAB9//DGCgoJ0jl26dCkyMjKMcpnxjTfeQEFBATZv3owhQ4YAAPLy8uDp6Sk3GFE7\nGddvGlEn1KtXL6xatQoajQbl5eU6x65btw43btzAnj17FErXcvv27cO8efMQEBCAJUuWoLKykiVI\nnQKLkEgBS5YsgYODA9avX69znJ2dXYtLU0kXL15ETU0N/vjHP+Lq1avo27cvd42hToNFSKQAtVqN\nuLg4xMXF4dq1azrH/vnPf8a4ceNw584dhdI1b/v27Q0fPtyzZ0+8++67vDiGOg2eIyRS0JQpU2Bm\nZoYjR47IjtJqqampWLVqFQ4ePAhHR0fZcYj0hkVIpKDr16/Dx8cHx44dg7+/v+w4LXLw4EGMHj0a\nrq6usqMQGQSXRokU5OHhgWXLlnWoT6j/7VPom1vSJeqoOCMkUlhFRQU8PT3x3nvvYenSpbLjtEhh\nYSGcnZ1lxyAyCM4IiRRw//59+Pv748KFCw1blEVFReHevXuyo+mk0WiQm5vLEqROjUVIpIDk5GR8\n9dVX8PPzw+uvv44XX3wR/fv3x5o1a2RH02nUqFEsQer0uDRKpIDx48cjNTW14bGNjQ1mzpyJvXv3\n4m9/+xsGDhwoMd3jubu7w8bGRnYMIoNjERIZWH5+Pjw8PPC4XzU7OzuUlJRISNW8gIAAHDhwALa2\ntrKjEBmUWnYAos5u//79jy1BAA0lOH78eHz88cfw8fFRMtoTabVajB07Fu+//z5iY2NlxyEyKM4I\niQxs4MCBLbr1QK1WY8GCBfjwww9hb2+vQDLd0tLSMHHiRFy4cMFoCprIEFiERAaUlZUFPz+/Vj3H\n2dkZcXFxeP311w2UquVmzJiBsrIynDx5UnYUIoPhVaNEBrR79+5WP6e4uBi9evXSf5g2iI2NRXp6\nOr788kvZUYgMhjNCIgOpra2Fi4tLqzfP3rlzJxYuXGigVK0XFRWFAwcOIDs7G1ZWVrLjEOkdZ4RE\nBnLixIlWl2BwcLBRlSDwn5vqa2pqsGXLFtlRiAyCRUhkIElJSa0aP3nyZMTHxxsmTDvY2Njgww8/\nxJo1a1BUVCQ7DpHecWmUyADKysrQp08fVFdXt2i8r68v0tPT0b17dwMnaxshBMaPHw8vLy8kJibK\njkOkV5wREhlASkpKi0vQwcEBf//73422BAFApVIhPj4en376KTIzM2XHIdIrzgiJDOCFF17AmTNn\nmh1nZWWFf/7zn3j++ecVSNV+CxYsQF5eHtLS0qBSqWTHIdILzgiJ9Cw/P7/JvqK6bN++vcOUIACs\nX78eV65cQXJysuwoRHrDIiTSM11bqjW2cuVKzJs3T4FE+uPo6AiNRoMVK1agsrJSdhwiveDSKJGe\ntWRLtVdffRUpKSkwM+t470Vramrw7LPPYtasWXj//fdlxyFqNxYhkR6dO3cOv/vd73SOGT58OM6c\nOQNra2uFUunfsWPHMGvWLOTk5KBfv36y4xC1S8d7O0pkxJq7d9DFxQVHjx7t0CUIAFOmTMG4ceMQ\nGRkpOwpRu3FGSKQnzW2pZmNjg9TU1FZvwm2sLl68iJGjRuFsdjaGPPOM7DhEbcYZIZGe6NpSTaVS\nYc+ePZ2mBAFg8ODBiP7uO8TV1IDvpqkjYxES6YmuZdHVq1dj+vTpCqZRxkIPD9x6+BDH7t6VHYWo\nzbg0SqQHurZUmz17NpKSkjrtDejJd+5gZ2EhDvv6opu5uew4RK3GGSGRHjxpS7WRI0di586dnbYE\nAWC6vT2esrDArtu3ZUchahMWIZEePG5Z1M3NDUeOHEGXLl0kJFKOmUqFMFdXHCguxo0W7q9KZEy4\nNErUTvn5+fDw8Giym4ytrS3S09Ph4+MjMZmyIq5fR50QiOvfX3YUolbhjJConT7//PMmJWhubo4D\nBw6YVAkCQGjfvvi2ogLp5eWyoxC1CouQqJ3+d1l0/fr1CAgIkJRGHhcrK8x2cEDszz+jjgtN1IGw\nCInaITMzE7m5uQ2PFy1ahIiICImJ5Arq0weVWi2Sn3A/JZExYhEStUPj2eCECROwZcsWiWnkszEz\nQ7CLC3YUFqK0rk52HKIW4cUyRG3UeEu1AQMGICMjA3Z2drJjSScABOXmYqCNDd51c2s4nlxcjJiC\ngsc+Z9OAARhta6tQQqKm1LIDEHVUv22p1rNnTxw/fpwl+P9UAN5xc8P83FxMtbeHt41Nk++vcHVF\nbwuLJse8Ovgm5NSxsQiJ2igpKQlqtRrJycnw8vKSHceoeNvYYJKdHTYUFGCnpycabycw0tYW7p38\n3krqWHiOkKgNysrKcPz4ccTHx+P3v/+97DhGKcTFBT88eICvS0tlRyHSiUVI1AYpKSlYuHAhli5d\nKjuK0bKzsMA8JyfE/fwztI0uRajSalHR6Kuqvl5iSiIujZIR02q1ePjwoewYjzAzM0NJSQkSEhJk\nRzF6cx0d8cXdu/ix0dZrbza63QQAfLt2xW4uLZNELEIyWklJSQgKCpId4xFOTk4ICwuDOT9poVkW\nKhWW9e0Li0abjq9xd4eTpWXD4678eyTJePsEGa3y8nLcunVLdoxHXL58GXPnzkVWVhZ8fX1lx+kw\nfrt94pCPDy+WIaPCGSEZrR49eqBHjx6yYzxi0KBBSElJwfLly3Hy5EnZcYionXixDFEbbNy4Eenp\n6fjyyy9lRyGidmIRErWBq6srwsLCEBoaapQX9BBRy7EIidpIo9GgpqYGW7dulR2FiNqBF8sQtUNS\nUhKCg4ORl5cHJycn2XGIqA1YhETtIITA2LFj4evri23btsmOQ0RtwCIkaqfz589j5MiRyMjIgJ+f\nn+w4RNRKLEIiPXjzzTeRn5+P1NRUqFSq5p9AREaDRUikB7du3YKXlxd2796NadOmyY5DRK3Aq0aJ\n9MDFxQWRkZGIiIhAdaN9NYnI+LEIifQkPDwcABAbGys5CRG1BpdGifTo0KFDCAoKQl5eHpydnWXH\nIaIWYBES6dmECRPg5uaGPXv2yI5CRC3AIiTSs4sXL2LYsGFIS0vDiBEjZMchomawCIkMYMGCBbh5\n+zZO/uMf4M0URMaNRUhkAEXFxVhaWIg/9euHl3v1kh2HiHTgVaNEBuDk4ICpffogvqAAVfX1suMQ\nkQ4sQiIDmengAGtzc+wpKpIdhYh0YBESGYhapUJY375I+uUXFPIzC4mMFouQyIDG9OiB4d27I+HW\nLdlRiOgJWIREBrbC1RXflJUhs6JCdhQiegwWIZGBuVpZYYaDA2IKCqDlRdpERodFSKSARX36oLyu\nDkfu3pUdhYj+B4uQSAFdzc3xJ2dn/LWwEOV1dbLjEFEjLEIihbxqb4++lpbYefu27ChE1Ah3liFS\n0MVff8Wi77/Hfm9veFhbNxxPLi5GTEHBY5+zacAAjLa1VSoikclRyw5AZEoGd+uGiT17YmNBAf46\ncOAj31/h6oreFhZNjnk1Kkwi0j8WIZHCQvv2xbQrV5BaXo5xPXo0+d5IW1u4d+kiKRmRaeI5QiKF\nOVpaYq6jI2ILClDDMxNE0rEIiSSY7+QErRA4UFzc5HiVVouKRl/csJvI8Lg0SiSBlZkZlrq4IPrm\nTbzp6Nhw/M3c3CbjfLt2xW4vL6XjEZkUFiGRJP52djhZWtrk2Bp3dzhZWjY87mpurnQsIpPDIiSS\nRAVgo4dHk2M+XbvyYhkihfEcIRERmTQWIRERmTQWIRERmTQWIRERmTTuNUpERCaNM0IiIjJpLEIi\nIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJp\nLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJpLEIiIjJp/wee+L/Kkult\njQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles(r'C[C@H](F)/C([C@@H](F)C)=C\\Cl')\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('S', 'S')" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m.GetAtomWithIdx(1).GetProp('_CIPCode'),m.GetAtomWithIdx(4).GetProp('_CIPCode')" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'C[C@H](F)C(=CCl)[C@H](C)F'" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Chem.MolToSmiles(m,True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Stereochemistry at P and S" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'CC(C)O[P@](C)(=O)F'" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Chem.CanonSmiles('F[P@@](=O)(OC(C)C)C') #<- Sarin\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n3gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles('F[P@@](=O)(OC(C)C)C')\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'S'" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m.GetAtomWithIdx(1).GetProp('_CIPCode')" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'COc1ccc2nc([S@@](=O)Cc3ncc(C)c(OC)c3C)[nH]c2c1'" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Chem.CanonSmiles('COc1ccc2nc([nH]c2c1)[S@@](=O)Cc1ncc(C)c(OC)c1C') # <- Esomeprazole" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nRM7Oyp6Gnjt69ChZWFjQ4cOHRUdhRoTHCI2UXC5HUlISPDw8sHfvXuzatQtr1qxBq1at6vQ43t7e\nuHLlCt544w0MHDgQAwYMQFZWVq2Obdu2LTZs2IBdu3Zh7969D8cP5XJ5fV5SnRQVAWvWAEOGAE2a\nACEhytuTk5XLJKrus1Cx7bxEAkilQFmZ1mPqh08/VV4d/f33RSd5os6dOyMkJASRkZEgY99ijBe1\n6o7oSsw0b9++feTn50fNmjWj5ORkksvlGnncR3t4oaGhdOfOnVofWzV+6OzsTF5eXrRjxw6NZHpU\nWVkZbdmyhSIikh72/N55h2jjRqJangk2PTk5ytNtv/yivs2BA7rLUwu3bt2iRo0a0ffffy86inZd\nvSo6gcngQmhELl68SIGBgWRhYUHh4eF070njPfX0yy+/0HPPPUdNmjShxMREqqysrPWx+fn5NHPm\nTLKysqLAwEA6f/78U2UpLS2lzZs307vvvkuNGjUiR0dHeu+9MbRli4zKyp7qoasx2jNxr7+uPDes\njkxG1K+fzuLUVnx8PLm5uVFRUZHoKNpx+TLRoUOiU5gMLoRG4MGDBzRz5kyysbGhgQMH0pkzZ7T+\nnJWVlbRixQpq1qxZvWaI5uTkUGBgYL3GDwsKCig5OZkCAwPJ2tqaWrZsSeHh4ZSRkaGx3u8/SaVE\nJ05o5aHF2bmTyMqK6MIF9W1WriRq2ZLowQPd5aqF8vJy8vT0JKlUKjqKdowcqZwpynSCC6EBUygU\nlJycTK6uruTu7q7x5RC1ce/ePZo5cyZZWlrWq4eXlpZGnTp1IicnJ0pMTFQ7O/X27du0YsUKCgwM\nJCsrK3J1ddVI8avt5/umTcrJekZzirWyksjbmygqSn2bqkk0X36pu1x1kJKSQjY2NnTx4kXRUTQr\nI4NIIiHSo9nWxo4LoYH6/fffqVu3bmRvb0+JiYlUXl4uNE9OTg4NHjy4Xj28qt5l06ZNydvbm3bu\n3ElERHl5eZSYmEi9evUic3Nz8vDwIKlUSpmZmRrt+W3apJydfuuW+jYlJUReXkQTJ2rsacVaupSo\nRQuiwkL1bWbMIHruOeXpUT01cOBAGm5MU3vlciJ/f14jqGNcCA3QkiVLyMLCgt588026UNNpLQHS\n0tKoY8eOT+zhqXLjxg0aM2YMmZub08svv0w2NjbUvHlzmjRpEv366691eqy6UCiUQ2W9eik7Suqc\n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\nqnPp0iUKDg4mCwsLCg8Pp7t372ok0z9VVlbSnj2HaNIkopYtiaysiAYPJvrqK6IHD5RtgoKIrK2J\nvLyIHp17w4VQ6fTp0ySRSGjPnj2io6j06aefUrt27ai8vFx0FK0LDAykN998U3QMo2dyhbDKkSNH\nqFevXsLG1qqkp6eTn5+fRntIVapeo52dHUmlUiorK6vX42RnZ9fpVO2jSktLH84kffXVV+n06dP1\nylBfWVlEUimRvz9RaKjytqAgopAQ5QzQR88icyH8W2RkJPn6+pJMJhMdpZrr16+TnZ0d/fTTT6Kj\n6MT58+fJysqKdu3aJTqKUTPZQkhEJJfLadWqVeTi4kKenp50SZd/bDdu0JyICDI3N6dRo0ZpbTeJ\nqvHD1q1bU7t27WjDhg11Ov7mzZvUsGFD6tu3b52XoyQnJ1OrVq3I3d29zjNJteHOHeW/QUFEkycT\nLVhA5OFBVPXdgwvh3/Lz86lZs2a0fPly0VGqGT16NA0YMEB0DJ2aMWMGeXt712kiGqsbky6EVe7f\nv0+fz5lD5OCg/ITTZq+lvJwoPp7I3p7S33mHfv/9d+091yOKi4tpwYIFZGdnV+f1h7XZFu1RJ06c\noL59+5K9vT0lJibq3SmsqkJYXEzk4kK0YoXydlWFULmM/vEfYy+ERET//ve/qVmzZpSfny86ChEp\n/w4tLCzo+PHjoqPoVGFhIbVo0YKWLFkiOorR4kL4qGvXlOfPLCyU5840NLZGREQKhfI8nJsbUZs2\nRIJ6SNeuXaOQkBCSSCQUGhpKt2/f1thj3759m0JDQ8nS0rLOM0l1qaoQEhElJhK1akVUVqa6EA4Z\nQnTsWPWfoUNNoxDKZDLy9fWlyMhI0VFIoVBQ9+7dacKECaKjCPGf//yHHB0d6U7VaQ2mUWZEBran\nki4cOQJMnQqcOAFMnw589BHwNBddPXkSiIgAjh5VblIZHg7UcPVsXThy5AgiIyNx5swZzJw5E1On\nToWlpWW9Hksmk2HZsmWIi4tD+/btkZSUhK5du2o4sea88Qbg5gYsXQqUlwNt2wJRUcpfU1ERsH79\n3+0aNwa++ab68WFhwKVLwM6dOo0txIEDB9C3b19s2bIF7dq1E5Zjx44diImJQW5uLpydnR+7/9y5\nc4iJicHatWshkUgEJHx6wcHBmDx5Ml566aXH7lMoFOjRoweeeeYZDBs2TPfhHjFo0CA0bNhQaAZN\n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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = Chem.MolFromSmiles('COc1ccc2nc([nH]c2c1)[S@@](=O)Cc1ncc(C)c(OC)c1C')\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'S'" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m.GetAtomWithIdx(11).GetProp('_CIPCode')" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/jcamp-examples.zip b/jcamp-examples.zip new file mode 100644 index 0000000..ca89624 Binary files /dev/null and b/jcamp-examples.zip differ diff --git a/jcamp_demo.ipynb b/jcamp_demo.ipynb new file mode 100644 index 0000000..6db446a --- /dev/null +++ b/jcamp_demo.ipynb @@ -0,0 +1,407 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This a notebook demo of the usage of the jcamp reader using matplotlib." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Archive: jcamp-examples.zip\n", + " creating: jcampdata/jcamp-examples/\n", + " inflating: jcampdata/jcamp-examples/.DS_Store \n", + " creating: jcampdata/__MACOSX/\n", + " creating: jcampdata/__MACOSX/jcamp-examples/\n", + " inflating: jcampdata/__MACOSX/jcamp-examples/._.DS_Store \n", + " inflating: jcampdata/jcamp-examples/.editorconfig \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/._.editorconfig \n", + " inflating: jcampdata/jcamp-examples/.gitignore \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/._.gitignore \n", + " creating: jcampdata/jcamp-examples/data/\n", + " creating: jcampdata/jcamp-examples/data/neutron_scattering_spectra/\n", + " inflating: jcampdata/jcamp-examples/data/neutron_scattering_spectra/emodine.jdx \n", + " creating: jcampdata/__MACOSX/jcamp-examples/data/\n", + " creating: jcampdata/__MACOSX/jcamp-examples/data/neutron_scattering_spectra/\n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/neutron_scattering_spectra/._emodine.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/._neutron_scattering_spectra \n", + " creating: jcampdata/jcamp-examples/data/infrared_spectra/\n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/benzene.jdx \n", + " creating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/\n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._benzene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/methyl bromide.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._methyl bromide.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/chlorobenzene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._chlorobenzene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ethylene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ethylene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/toluene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._toluene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/carbon tetrafluoride.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._carbon tetrafluoride.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/m-xylene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._m-xylene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/penta fluoroethane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._penta fluoroethane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/hydrogen sulfide.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._hydrogen sulfide.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/acetone.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._acetone.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/methanol.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._methanol.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ethyl tert-butyl ether.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ethyl tert-butyl ether.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/1,3-butadiene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._1,3-butadiene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/chloroform.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._chloroform.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/methane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._methane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ethyl acrylate.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ethyl acrylate.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/iso-pentane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._iso-pentane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/2-butanone.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._2-butanone.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/iso-butylene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._iso-butylene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/1-butene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._1-butene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/carbon monoxide.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._carbon monoxide.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ammonia.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ammonia.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/sulphur hexafluoride.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._sulphur hexafluoride.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ozone.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ozone.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/vinyl chloride.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._vinyl chloride.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/water.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._water.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/methyl tert-butyl ether.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._methyl tert-butyl ether.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/1,3-dimethylbenzene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._1,3-dimethylbenzene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/tetrachloroethene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._tetrachloroethene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/1,2-dichloroethane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._1,2-dichloroethane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/1,1-dichloroethene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._1,1-dichloroethene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/vinyl acetate.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._vinyl acetate.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/1,2-dimethylbenzene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._1,2-dimethylbenzene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/acetonitrile.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._acetonitrile.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/carbon dioxide.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._carbon dioxide.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/dichlorodifluoromethane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._dichlorodifluoromethane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/1,4-dimethylbenzene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._1,4-dimethylbenzene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/1-butanol.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._1-butanol.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ethylene oxide.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ethylene oxide.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/n-pentane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._n-pentane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/propane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._propane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/butadiene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._butadiene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/propylene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._propylene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/trans-butene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._trans-butene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/p-xylene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._p-xylene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/1,1,1-trichloroethane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._1,1,1-trichloroethane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/propylene oxide.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._propylene oxide.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/n-heptane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._n-heptane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/sulfur dioxide.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._sulfur dioxide.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/cis-butene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._cis-butene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/neo-pentane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._neo-pentane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/butane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._butane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/dichloromethane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._dichloromethane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ethyl acetate.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ethyl acetate.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/acrylonitrile.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._acrylonitrile.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ethanol2.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ethanol2.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ethyl benzene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ethyl benzene.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ethane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ethane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/ethanol.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._ethanol.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/heptane-2,3-dimethylpentane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._heptane-2,3-dimethylpentane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/iso-butane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._iso-butane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/isopropyl alcohol.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._isopropyl alcohol.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/methyl_iodide.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._methyl_iodide.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/hexafluoroethane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._hexafluoroethane.jdx \n", + " inflating: jcampdata/jcamp-examples/data/infrared_spectra/n-butane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/infrared_spectra/._n-butane.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/._infrared_spectra \n", + " creating: jcampdata/jcamp-examples/data/mass_spectra/\n", + " inflating: jcampdata/jcamp-examples/data/mass_spectra/Tetrachloroethylene_ms.jdx \n", + " creating: jcampdata/__MACOSX/jcamp-examples/data/mass_spectra/\n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/mass_spectra/._Tetrachloroethylene_ms.jdx \n", + " inflating: jcampdata/jcamp-examples/data/mass_spectra/CH4_CI.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/mass_spectra/._CH4_CI.jdx \n", + " inflating: jcampdata/jcamp-examples/data/mass_spectra/118-96-7-Mass.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/mass_spectra/._118-96-7-Mass.jdx \n", + " inflating: jcampdata/jcamp-examples/data/mass_spectra/ethanol_ms.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/mass_spectra/._ethanol_ms.jdx \n", + " inflating: jcampdata/jcamp-examples/data/mass_spectra/1-propanol_ms.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/mass_spectra/._1-propanol_ms.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/._mass_spectra \n", + " creating: jcampdata/jcamp-examples/data/uvvis_spectra/\n", + " inflating: jcampdata/jcamp-examples/data/uvvis_spectra/toluene.jdx \n", + " creating: jcampdata/__MACOSX/jcamp-examples/data/uvvis_spectra/\n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/uvvis_spectra/._toluene.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/._uvvis_spectra \n", + " creating: jcampdata/jcamp-examples/data/raman_spectra/\n", + " inflating: jcampdata/jcamp-examples/data/raman_spectra/tannic_acid.jdx \n", + " creating: jcampdata/__MACOSX/jcamp-examples/data/raman_spectra/\n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/raman_spectra/._tannic_acid.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/._raman_spectra \n", + " creating: jcampdata/jcamp-examples/data/hnmr_spectra/\n", + " inflating: jcampdata/jcamp-examples/data/hnmr_spectra/ethanol_nmr.jdx \n", + " creating: jcampdata/__MACOSX/jcamp-examples/data/hnmr_spectra/\n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/hnmr_spectra/._ethanol_nmr.jdx \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/data/._hnmr_spectra \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/._data \n", + " inflating: jcampdata/jcamp-examples/.travis.yml \n", + " inflating: jcampdata/__MACOSX/jcamp-examples/._.travis.yml \n", + " inflating: jcampdata/__MACOSX/._jcamp-examples \n" + ] + } + ], + "source": [ + "! unzip -o jcamp-examples.zip -d jcampdata" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting jcamp\n", + " Downloading https://files.pythonhosted.org/packages/fc/4a/3070fd39178b7d9b50c7b1fab6a06ea88d61270fd732dd9d9bd0f29f91c5/jcamp-1.2.1.tar.gz\n", + "Collecting numpy (from jcamp)\n", + " Using cached https://files.pythonhosted.org/packages/07/08/a549ba8b061005bb629b76adc000f3caaaf881028b963c2e18f811c6edc1/numpy-1.18.2-cp36-cp36m-manylinux1_x86_64.whl\n", + "Collecting six (from jcamp)\n", + " Downloading https://files.pythonhosted.org/packages/65/eb/1f97cb97bfc2390a276969c6fae16075da282f5058082d4cb10c6c5c1dba/six-1.14.0-py2.py3-none-any.whl\n", + "Collecting matplotlib (from jcamp)\n", + " Downloading https://files.pythonhosted.org/packages/93/4b/52da6b1523d5139d04e02d9e26ceda6146b48f2a4e5d2abfdf1c7bac8c40/matplotlib-3.2.1-cp36-cp36m-manylinux1_x86_64.whl (12.4MB)\n", + "\u001b[K 100% |████████████████████████████████| 12.4MB 56kB/s eta 0:00:01\n", + "\u001b[?25hCollecting cycler>=0.10 (from matplotlib->jcamp)\n", + " Downloading https://files.pythonhosted.org/packages/f7/d2/e07d3ebb2bd7af696440ce7e754c59dd546ffe1bbe732c8ab68b9c834e61/cycler-0.10.0-py2.py3-none-any.whl\n", + "Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 (from matplotlib->jcamp)\n", + " Downloading https://files.pythonhosted.org/packages/8a/bb/488841f56197b13700afd5658fc279a2025a39e22449b7cf29864669b15d/pyparsing-2.4.7-py2.py3-none-any.whl (67kB)\n", + "\u001b[K 100% |████████████████████████████████| 71kB 616kB/s eta 0:00:01\n", + "\u001b[?25hCollecting kiwisolver>=1.0.1 (from matplotlib->jcamp)\n", + " Downloading https://files.pythonhosted.org/packages/ae/23/147de658aabbf968324551ea22c0c13a00284c4ef49a77002e91f79657b7/kiwisolver-1.2.0-cp36-cp36m-manylinux1_x86_64.whl (88kB)\n", + "\u001b[K 100% |████████████████████████████████| 92kB 780kB/s eta 0:00:01\n", + "\u001b[?25hCollecting python-dateutil>=2.1 (from matplotlib->jcamp)\n", + " Using cached https://files.pythonhosted.org/packages/d4/70/d60450c3dd48ef87586924207ae8907090de0b306af2bce5d134d78615cb/python_dateutil-2.8.1-py2.py3-none-any.whl\n", + "Building wheels for collected packages: jcamp\n", + " Running setup.py bdist_wheel for jcamp ... \u001b[?25ldone\n", + "\u001b[?25h Stored in directory: /home/.cache/pip/wheels/e5/48/bf/58e53110ec2c7cac7089a90d51b2d53ebff2cf3c068e209bda\n", + "Successfully built jcamp\n", + "Installing collected packages: numpy, six, cycler, pyparsing, kiwisolver, python-dateutil, matplotlib, jcamp\n", + "Successfully installed cycler-0.10.0 jcamp-1.2.1 kiwisolver-1.2.0 matplotlib-3.2.1 numpy-1.18.2 pyparsing-2.4.7 python-dateutil-2.8.1 six-1.14.0\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install jcamp" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'ARBITRARY UNITS')" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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ZusePXoAViDHvn37ePHFF33WGzlyJAA//fSTW+b0DaoIf/nLX3j66ad54403KmW3oiiVI5T47DbGPBDsL2IWxijq+VSOI488ktatWwdd7mQ0GDRoEFCahueBB6xbccqUKUDp6KcrV650t3WG7gYrsOHaa69lx44dAY/jiNwtt9zC3r17q3QuiqKUTyjxuTpiVsQh6vlUjkWLFrF169agy6dMmcK2bdvc6jen749D69atGT16NAAFBQU+y0866SR3eubMmTz//PO0bt2axo0b88svv/jsxztwXZMmTap+QoqihKTcTqZK1VDPp3KISMjgjJSUFB/PKD09nY8++sidb9myJT179gQgJyeHP/74A4DmzZuzb98+d73i4tKUgfv27ePoo4/2OY4TIu+gaXwUJTyEEp8jRWRvgL99IqL1EeWgnk/4Oeecc/jb3/7GkCFDOPbYY92w9rfffhuACRMmkJaW5tOHyCtEYHVu9eIvPl6xUhSl5gglPkuNMY0D/DUyxjSOmIUxino+keH//u//mDVrFomJia74OB7R+PHjy4iPNzoOrD5EXvLy8rjsssvc+cLCwnCZrih1Gq12CxPq+UQeR3x27dpF586dadeuHStXruTdd99113Fy7j3zzDOAVX3nJTc3l/T0dJ54whpkt6CgIBKmK0qdI5T4vB0xK+IQ9XwijyM+e/fudYXf8Vy2b7cG0XXEZ+zYsZxwwgkUFRX57CM3N5eUlBSSkpJ8tq8sv/zyC+vWravStopSFwglPm1E5N/B/iJmYYyink/kCSQ+1113HWBF04FV7ZacnIyIkJKS4ooRWMEFeXl5pKamuvv67bffqtTuc/TRR9O5c2dmz57tpgVSFKWUUOKTASwM8aeEwPmCViKHIxjZ2dnutb/kkksAGDp0KGB5PvXr1weswem8mQwKCwspKSkhNTXV9XwGDhzI008/XWEbMjIyKCkpcefPOeccjjnmmGqclaLEJ0GzWhtjXomkIfGG8wWtRA5HVPbu3cs333wDwHHHHQdA7969AVizZg3t2rUDoEuXLnz88cds27aNgw46yCcTuVeUvvrqK8aNG1fu8RctWkS/fv247777au6kFCVOCer5iEgLEfmriNwiImn2CKbLROQDEekabDvFQqvdIo8jNF5SU1MZOnSoGziwaNEi1xPp3Lkz+fn5tGnThvnz57s54FJTU30ya3ur5kLhRNLNmjXLp7xVq1aVPxlFiXNCVbu9AdQHugE/AmuBC4GPgOfDb1rsUlRURFFRkVa7RZjGjRu7VW/e4RW6dOnCkiVLePjhh9m0aRNHHHEEAIcffri7zoQJE9wUPk2aNOHmm292RcMbqh2KYB1S/SPqFEUJLT6tjTH3ALcAacaYx4wxK4wx0wB9mkLgfCmr5xN58vPzKSkpoUOHDm6ZM0TDPffcA5SOlDpw4ED+85//ANZvtm7dOk444QTOO+88kpKS2LRpE+eff36ZQeyC4UTG+YuQkxJIUZRSQolPMYCxnqRdfstKyq6uODjio55PdPBP03PooYf6zB977LHu9A033MD555/vpuMZOXKk+9GQlJTEYYcdxsaNG/nggw/KPa4jPt4B7qDs8N+KooQIOAA6i8hMQDzT2POdwm5ZDOM0XKvnUzvo169fyOWNGzd2s2T7jyXkBCcMHz683DxvjvisWbPGp3zLli0YY3RgQUXxEMrzGQY8ATzumXbmh4fftNhFPZ/aRdOmTbn77ruDLu/evbs73aiR71BVThVdeSxfvtytnvPvF1RSUsIXX3xRUXMVpU4QKtT662DLROTE8nYsIi8CQ4EdxpjD7bJmwP+AjsB64GJjTJZYn4RPAUOAA8CV9tDdMYl6PrWPhx9+mGOPPTZg5JnX2znllFN8lvlX2QUiMzOTXr16hVznjDPOoKioyCeKTlHqMqFCrRNFZISI3C4ijngMFZHvgIr0unsZOMuv7G5gjjGmGzDHngc4GyuqrhswBni2UmdRy1DPp3YyfPhwTjjhhDLlw4YN4/TTT2fjxo1uXyGHxMRE7rjjjpC/5bx58yp0/M8++6xyBitKHBOqzecFoD1WmPW/RWQL0Be42xjzfnk7NsbME5GOfsXDgFPs6VeAr4C77PJX7eCGBSKSLiJtjDHBRxerxajnE1u0atUqpDA0adKEvLw8CgoK3FBuL057UXn4ByIoSl0mVJtPX+B0Y8xErOqwocCJFRGeELT2CMo2wBkd7GDgD896m+yyMojIGBHJEJEMp1NgbUM9n/jCuc9effXVgMudDqwbN27kzjvvDLqfmhiewRjDa6+9pkKmxDyhxKfAGFMCYIzJA9YaY3aHWL9S2F5OpYeJNMZMNcb0Ncb0bdmyZU2ZU6Oo5xNfXHvttYA1TlCgbAeOqKSkpPDoo4/SuLE13NXw4cO58sorufnmm33Wqw5Llixh5MiRbt8lRYlVQolPDxFZYv8t9cwvFZElVTzedhFpA2D/32GXb8aq4nNoZ5fFJN4cYUrs06tXLwYMGMAHH3zgflAUFxezZs0amjRpwk033QTgJiPdsmULzz33HDNmzOCll15iwoQJgCU+RUVFvP7662WGcvDy2WefISJ8/PHHZZY5x9i2bRubN8fsI6IoIcXnMOBc+2+oZ36o/b8qzARG2dOjgA885SPF4jggO1bbe0AzHMQjbdu2dafz8vK48cYb6dq1K3v3lo4o77QHNWzYkOuuu87t1+MdG+iVV17hiiuuCJkp+7nnngPgrbfeKrPMmzF76dKl1TgjRYkuQcXHGLMh0B+WhxK8YttGRN4Evge6i8gmEbkGeAQ4XURWAYPteYDZWLnjVgPTgBuqdVZRRqvd4g9vipxdu3YxZcqUMusECkaAUvEpKipyc879+OOPAdctKipyPZ5A1XRej2nVqlUVtL7i7Nmzh/nz59f4fhXFnwoNoy0ifUTkMRFZD/wNWFHeNsaYEcaYNsaYJGNMO2PMC8aY3caY04wx3Ywxg40xmfa6xhhzozGmizHmCGNMRrXOKspowEH8cf3117vT7duX1hB70+4E68Pj9XxWrlwJwLfffkt2dnaZdQ8cOODeP4ESmno7sDofOTXJtddey8CBA3nvvfdqfN+K4iVoqLWIHAqMsP92YXUOFWPMqRGyLWZRzyf+6N+/P1lZWTRt2tSn/OCDS4Myg6XPccSnoKCAxYsXA1ZknHcMIQfvfHniUxMBDP44qYHOP/989u3bR1paWo0fQ1EgtOezAhgEDDXGDDDGTMZONqqEJi8vDxFxXzpKfJCens6ll17qU3b00UeXu12DBg1IT09n4cKF/P7773Tu3Bko9ZCNMa6oeKPpoiE+DRs2dKe97UuKUtOEEp/zga3AXBGZJiKnYSUVVcrBGUJbE0nGH1OmTHEDAq6++mpEhMmTJ/Ppp58G3UZE2LNnD2+//TbGGCZMmEC/fv3o378/YCU+rVevHsYYtmzZ4m4XqC+Pt80nHOLjDaxQlHASKrfb+8D7ItIQKwPBeKCViDwLvGeM0VwhQcjNzfX5glTih7S0NK677jpGjBjhVqs6odYVJTU1lXbt2rF69WoAFi5cCMAvv/zCnDlzAOjTp4/PUN4O4fZ8vNWI/glSFaUmKTfgwBiTY4x5wxhzLlb/m1+wUuIoQThw4IC298Q5jRs3rlS16syZM93p+vXr8+GHH7J06VI3OwLA+vXr3bF/TjjhhHKr3UL1FaoqXkGrarVbcXEx06ZNq/Dw40rdpELRbg7GmCw7w8Bp4TIoHjhw4ICOXqn4cO6553LiiVYy+MzMTFc4vKOkXnDBBWzZsoV27drRsGHDgNVu27Ztc6dr2vNZuHChT/+jqorPF198wZgxY5g4cWJNmabEIZUSH6ViqPgogRg1yupfnZyczIwZMwDYsGEDCQmlj+Fnn31G+/btyc7OJj8/n+3bt/vs4/LLL3en8/Pza9Q+bzg5WOJz9tlnIyLlDqTn8N///pclS6wEKJs2bapR+5T4QsUnDOTm5qr4KGUYPXo077zzDtdccw1HHXUUYFW1eQewy87OpmPHjm4/m+nTpwfcl4i4Q3/XFI5nNnDgQMDysj755BMAduzYEXQ7B2MMl19+uZtcVccuUkKh4hMG1PNRAiEiXHDBBSQmJrrDc48ePZrs7GzGjh3rrpeWlsbLL78MQMeOHQPu65xzzqlWhoO1a9cyYMAAn2q8Jk2aAKXeVe/evd1lFckj5x+g4PXoFMUfvTvCgAYcKOXhn4rHefGD1dfmkEMOAax7ySErKwuARx55hCOPPJL169dXqN3HGENGRoaPOJx66ql8++23TJs2zS0rLi5GRAJ6LBWpQvNvI1LxUUKhd0cYUM9HqSw///wzN9xgpTRMS0tzMwt423iWLVsGQPfu3enWrRvFxcXljo66e/duEhIS6NevH//6178A2Lp1qxvo4BWkkpISEhMTA4rG77//HnD/hYWFbttTvHg+I0eOdPtgKeEjNu+OWo62+SgVoUePHu70mjVr3Ai4tLQ0t1rOG07tvORbtGjB6aefDsD3338f8hjOWEJQmoh0xYrS1Ize/RcXF5OQkBBQNLw57LwkJye74xj5ez6x2ubz2muv8dNPP0XbjLhHxScMqOejVISFCxe6udSaNm3qiktaWhoJCQkMGDDADQKA0hFTk5OTOfjgg0lNTfXpJ+TPrl27ePPNN915p2pv1qxZbplXfEpKSoKKT3nRbnfffXfceD4OgwYNirYJcU1s3x21FBUfpSI0aNCAzp0788Ybb/DBBx+44uNkx2jUqBEHDhzgm2++YezYsW7SUae9KDExMWhHU2MM//znP33KiouLKSws5IknnnDL/MUnWLVbsOMcc8wx7vTWrb5DcHmj+GKRuXPnRtuEuCZoeh2lapSUlJCXl6cBB0qFGTFiBFCaVNQRH2dcn5NOOgmALl26AL7iEywFzmeffcZjjz3mU5afn+8z+B0Ernbzdm49/vjjad68uU/OOS/e4/uPvKoZsZVQqOdTwzhfp+r5KJXF8XyC3TtO/5mKiE+9emW/K3Nzc33EJjk5OaDn40TVgTUcRL169YJ6Pnl5ea6ndOutt/osi/VqNyW86N1Rw6j4KFXFaVepX78+UNaTcHByyoUSHy9z5szhqKOOYuPGja6ITJ06laZNmwb0fHbu3OmWzZs3L6T45OfnB73XNTGpEgoVnxrG6Zeh4qNUliuvvBKAnj17AnDWWWdhjGHt2rU+6zVr1gwILT5OihuwxGzx4sV8/vnn7Nu3D7A8I39RcQIObrnlFp99lSc+wTK4//LLL5pcVAmKik8No+KjVJVLLrmEoqKiMmPqdOrUiaeeesqddxryQ4nPbbfd5k43b96c006zcgE7mQrq1atHZmYmL7zwglvN5lS7tW/fnttvvx2whouoV69e0M6seXl5Qe/1jz/+mHHjxpV73rUZ9d7Ch4pPDaPio1SHYH1jbrnlFgoKCsjOzvZZt7i4mH/+85+IiBtW/c0337jr3HzzzRx66KGMGTMGsBJ/giU+ThXxW2+9BZRWu0HpQHY9evRg+fLlrFu3LmC4dahqN6DcTrC1Ee9QGf4BGkrNoeJTwzjio9FuSk2TlJRE48aN3fl69erx+++/c9dd1vBal156KR06dHCj4wD+/e9/k5CQwNChQ4HSIRy8AQkPPvggIsJbb73lit+ZZ54JwIABA/j5558BK8XOxo0bfSLf8vPzy9zrTl46sBKnxhrea6PVhuFDxaeG0YADJVIkJiayYMECnzJvput33nnHnXbuR2ek1Hr16vHRRx8BpWME7d+/383hNmzYMHJzcznqqKPcTqkzZszgkEMOYfDgwYCVa66oqMgnLx2U7ZAajkHvKsrKlSt9BvIrj6KiIvcZBnymlZpFxaeG0Wo3JVKIiDsdaCjvs846K+i2SUlJDBkyJOT+U1JSAOjVqxcA48ePB+C3334DYNGiRQAcffTR7jYNGjTg1FNP5fnnn3fLvJmzvWRnZzNkyJAy3lFJSQnffvtthccQCsVhhx3GsGHDKrz+nj17gNLhxL2JXavKypUrueGGG7T9yA8VnxpGxUeJFE711xVXXMHkyZN9hj3Izc0tE4XmfQl36tTJR7xC0b59+4Dlzr2enp4OwODBg8nJyeGQQw7hmmuucT2vzMzMgNu/9957fPzxx9x7771umTGGww47jAEDBrgD7lUHJ99cRb0vJ/jCSWtUE20+f/rTn3j22WfLRC3WdVR8ahgVHyVSOMlFJ0yYAEDbtm3ZtWsXeXl5rtfi5cknnwSsIATHmykuLubzzz9n9OjRQY+TkJDgHsshJyen3FxuTsN9sBe/E+jgeFIAGRkZrFy5EoDVq1cHtamyLF++vELrOaHojpDfd999gFUlWVUcAfMGMihREh8RWS8iS0VkkYhk2GXNRORzEVll/28aDduqi1NHrAEHSriZMWMG+/fvd0dFBSus2umk6k/nzp3Jy8tzh1YASzAGDx7M008/HfJY/glMP//8c1d8TjzxRAYNGsSkSZN81nEa7gOJz7Jly/j0008B3w81b1VbdV74Dp06dQKCe1/+OAEGTpXkMcccQ0ZGBo0aNXLbyCrDgQMH3Jx3FRl7KRDNmjVzqzzjiWh6PqcaY3obY/ra83cDc4wx3YA59nzModFuSiQJ1sEzGPXr1w+Y9iaYYDnMnz/fZ947BETz5s2ZM2eO2znWwfnSD/TS9Q714DwrxhifUPO///3vZYZpqCxOMIQ3ZVAonI/HQw89FMBnSHNvCHtFueqqq9zpUBnIQ5GVleXTzyteqE3VbsOAV+zpV4DhUbSlymRnZ5OYmKjVbkrMMWnSJObNmxdwmSMCd9xxBwDffvut6/kE65sUyvP56quv3GlneUJCAn379vVZb/fu3ZU4g7I4oekV9Xycj0enI29RUZFbDdi6detKH79Pnz7udFU9HwcnGCJeiJb4GOAzEVkoImPsstbGGCcn+zYg4C8tImNEJENEMrw5qCpLcXGxz6BaNUVWVhZNmzatcGOuotQWxo8f79NHyMuqVasYMmQI99xzD2AFC1RHfBxOOumkgMs7d+4MVL/qzfF8Ro8eXaHouWuvvRYoFZ/CwkI3cKIqnou3n1BVtvd6fvHW4TVa4jPAGHM0cDZwo4gM9C401l0S8E4xxkw1xvQ1xvRt2bJllQ2YOHEihx12WJVc6VA44qMo8UTXrl2ZNWsW6enpbvSbE21XnvgE+uI/66yzaN26NampqRQWFpYJXnDCxJ0AgKrw2GOP8eGHH7rzFRmddPv27UDpOW3YsMFd5mQdL49Fixa5Hpu3uq8qno/3utRE6HltIiriY4zZbP/fAbwH9Ae2i0gbAPv/jnDa4AyoVdEomIqSlZXlhp4qSjzy+OOPA6X9dwIN3wClbT6BvvhFhPbt25OUlFSmYyfg5rerajsJlA5B4eA/2J0/3pd7ixYtAJg8eTKtWrUCKi4+ffr0cbf3VvdV5VycjBRAtdu/ahsRFx8RaSgijZxp4AxgGTATGGWvNgoIPGh8DbB27Vr3h6zoDVVR9uzZo56PEtc4VVJOG0Qwz8fpqLlq1SoAnnrqKTeKrLCw0B0rqLCw0GcAO7A6h0L5/XN+//33Mtv64wQ0OPZ+8cUXPPvss2XWc4RizJgxbrUflFadVSXVjtc2x/NZvny5T8RhKPr37+9Ol5SUYIwJ2mk31oiG59Ma+EZEFgM/ArOMMZ8AjwCni8gqYLA9HxYWLlzoTlfnyyoQWu2mxDvOV73zVR5MfA466CAaNGjAli1b+OKLLxg/fjwff/wx8+bNc8UnLS2N7du3+2QSePjhh91AgVBVVSUlJfTo0YOzzz7bLcvOzqakpMRnO8er2rdvH8899xynn346N9xwQ5n9Oe1Lxx57rE+brdPWUpEPVf+qMa8dzrumV69e3HrrreV6YuDrOZWUlDBlyhTatGnDsmXLyt22thNx8THGrDXGHGX/9TLGPGSX7zbGnGaM6WaMGWyMqVh4ShUYMGAAL774IqDioyiVxQlDdnrsBxMfEaFx48bMnTvXp5PqpEmTyMzMJDk5mSOPPJLt27fz5ZdfAvD6669z9913VyhYwYkonT9/PsYYcnJySE9P595773Vz1HnZvn07119/fdD9+ffRe/vtt32WV0R8/NuuCgoK3A6//kLq/QiuCCUlJe4Ag2vWrKnUtrWR2hRqHTHatGnDqFFWDV+oGyozM7NSrrYxRsVHiXsaNWpEQkKCKz7+iUW9FBUV8csvv/iUvf/++yxfvpyePXviBA39+uuvABx55JFA4D5ChYWFiAjNmjWjpKTE59nNz893AwqmTJniEyiQnp5OUlJSmfZd/zYUf/Hp16+fz/KKvAu8H7PFxcUUFBS4fbEKCgpYunSpu7wi0Wvnnnuuj72O0MdDnrg6KT5g9SmoV69eQM9n+fLlbNy4kebNm/OnP/0JYwxPPPFEubmZcnJyKCoqUvFR4pqEhASfoJpQHVQffPBBd9rbsbS4uJhDDz3UHZ/IyY5w+OGHA6VBDE5gEJSOzpqVlVWm3SM3N9fNBXfcccf5JCu97LLLaNSoETt2+MYwTZkyxaeazEnn44iPf4qiing+3vfJqlWrKCwsJC0tDbDE0xFXoIw9gfCPdnM6vEYzU3hNUWfFB6yHxv9LpX///vTq1YtDDjkEsNKIrFq1ittvv50RI0aE3J8TVqnRbkq843xgtWnTJuR65513nju9f/9+dzA7gLPPPtunQb5hw4ZuW4vj+XgHo/MOpOf0x3GqAJ977jkmT54MWJ6Y4/ksW7aMyZMnU79+fXd7J+jhhhtuYPHixe4+L774YgCSk5OBsqL69ttvhxxiobi4mOuuu86dP+yww3w8nyuuuMJn/VtvvZV9DUpQEAAADmNJREFU+/axZ88eBg8ezOLFiykpKeGuu+5yxdN/mHPvsWKdOi0+ycnJPl8zWVlZZfoCJCUlufXE3pj9FStWlPGEnOXq+SjxjhN+fPXVV4dcz5sV4LHHHuPCCy905zt37uwOhAdwzTXXuNPeocQPOugg9u3b59NAP3v2bJ/jOJ1fwcpSsGHDBtq2bUuvXr0QERITE90+Q82bN3fX7dOnDyLCa6+95pY5jfyBPLpQbS0LFixg+vTpPmWFhYUhUyDl5OSwbNky5syZw4033sj69ev55z//SadOndi3b5+P+Hir/eJhkLs6Lz5ezydQ+orCwkK3MdR7Ixx22GF06dLF52vE2V7FR4l3nPGDHM8jGCKCMYaSkhKaN29OcnIyF198sVtF5u0j5IRwgyU4Dtu3b+fiiy8OGB3mFS+HAwcOsH79ejp27OiWJSQkuNFs7dq1K7PNX/7yFzfn3aBBg4BSD8hLqAAlJwO2//qhvMPc3Fw3q8T69et9qgHPPfdcn3eOt8Pst99+G3SfsUKdFh//arfy8j+tW7euTJ8Cb8SK03dAxUeJdy699FLWrVvHZZddVqH1vaHL//vf/3yq45yXdrDOqgCffPIJW7duJTU11a0SBys9j7cvTNu2bdm3bx9z5871eQ4TExNd8XHExcvgwYMpKSlh+PDh7nbeKL5XXrHSTgZr99mzZw9z585157t06QLgU+3mv0/wfeds3rzZZ/9ff/21j/h4289eeOGFgHbEEnVafPyr3RzP5aKLLvJp6ITSagDv2COAzwBezvgk3i84RYlXOnbsGDTMujIEG/fnoYce8pl/8sknyc3NZeTIkW5Zt27deOaZZ9z5fv368cMPPwC+7UWJiYluVVWnTp18+gZBaRqdbt26BbTRSSkULLmnv1fmVEseOHCgjAflzSrun0jV+z4aNmyYT9uOM8Ad4BO4EKvUefHxej5OY+Ldd9/Nbbfd5t5AJ598shtl8vTTT/Piiy+6D8yKFSvYt28fS5cudaNjnDFEFEUpn2DhwxMnTiQ/P79M3xz/gJ4OHTq4097qugULFpQ5BliZrmfOnOmzDydzddeuXQPauGvXLgC3i4Y//kM2OEENW7ZsoaioiL///e+AdY6hBpVzsoaD5RV5Bfnbb78lISGBww8/PGCVYKxRp8XHv9rN+TJyRMT5gadMmULfvn1p2rQpr7zyCtdcc43b/2DixIk0btyYI488kpSUFK677rqQ1QeKovjieAL+/W5EhOTkZLwJhG+66aYyYuRkXADfIb+PPvpod9pffLzP6GWXXeZ6Pk5mBX+cvkw7d+50o/K8Yxzdcsst7nS3bt189jNz5kw3Og8CtyU5zJkzx512Ag4GDx7slrVq1Yru3buXm1IoFqjT4uNf7ebfycwZCKpVq1YkJCRw3HHHhdzfnj173OGJFUWpGGPGjOHcc8/ltttuC7jc682MGTOG1NRUMjMzXW9ERLj++uuZNm2aT5oeL96GfP8oNq9gBasy92ZocI4xcOBAd79O2+99993HokWLfAQmMTHRR/yaNm3qVtEHIyUlhUWLFpGTk0Pjxo3dKMGUlBQaNmyo4hPr+Fe7+Xs+999/P5mZmW4DZKARIP1xEiIqilIxmjVrxsyZM4MO1uYNTjjiiCMA6wXuDZl+5plnGD16NOPGjQu4D/+2WofDDz/cJzDB34b77ruPSZMmBR2fKyEhwafK7cEHH6RBgwY+4uO/7caNG7nkkksC7g+ssZKcd9Hq1avZtGmTe66pqakUFxezcePGag03URuo0+LjX+3m7/kkJCT43JhOVZvTkSzQDVle6KmiKJWjMtGjTjttMCZOnOhO5+bmsnDhQh/Pxz8A4MEHH2T8+PGAlQ07EM2aNQN8RdJ5hwDcfvvt7jpenKCHjz76yKf/k7cNC+DHH390P3x/++03t6NuRTNj11bqtPgkJyeTm5vLO++8w6pVq1y33z+thsPkyZMZOXIkTz31FBkZGWRkZAC+1QKB+hAoilJ16tevz0MPPcTUqVMrtP7jjz/OjTfeGHCZN5t1SkoKycnJnHHGGQBBvSaHQCHaXrxDZnuDju655x5EpExEnBOU0KFDB9588023vHHjxm4/KLAi+AJFFcb84HLGmJj9O+aYY0x1GD58uDNiqqlXr547XVJSUuF9FBcXmzfffNMApkOHDtWyR1GU8PDss8+aESNGVHs/X3/9tfnqq6/cd4X37/bbb3fXW7dunVvuZfv27ebAgQPGGGMKCgrMypUr3WXO+tu2bTNr1qxx5/Pz8824ceMMYLp06eKWP/DAA1U+DyDDRPn9Xac9H2/DoxPSOGHChKD1u4FISEhwt/V++SiKUnsYO3Ysb7zxRrX3M3DgQE4++WR69OgBWB/vixYtAmDo0KHuek5tiH9fpVatWrlVcklJSQH7FTVq1MgnWi45OdkNQ/emM/J6S7FInY4JdsYD8eIMEVwZnLaiE044odo2KYpS+/nxxx/d6aOOOoqioiKfqrGUlJQqV4ulpqaW6a7hBCB431krVqyo0v5rC3VafG688UZeeukld97bU7oyjBo1iuLiYkaPHl1TpimKUovxD8muiUwPixcvZsWKFW7/Ji/O4Jc///xztY9TW5CqqnNtoG/fvsZp9K8q48aNo2HDhkEjUhRFUaJBly5duOKKK7j//vuZOnUq1113HZ9//rlPn6Oqvr9FZKExpm/5a4aPOi8+iqIosYS3TTqWxadOBxwoiqIo0UHFR1EURYk4Kj6KoihKxFHxURRFiSF69uwZbRNqBBUfRVGUGMIZp+jOO++MsiXVo9aJj4icJSK/i8hqEbk72vYoiqLUJho1asSIESNifjTTWtXJVEQSgf8ApwObgJ9EZKYxZnl0LVMURak91ESqoGhT2zyf/sBqY8xaY0wB8BYwLMo2KYqiKDVMbROfg4E/PPOb7DIXERkjIhkikrFz586IGqcoiqLUDLVNfMrFGDPVGNPXGNPXO7a7oiiKEjvUNvHZDLT3zLezyxRFUZQ4oraJz09ANxHpJCLJwJ+BmVG2SVEURalhalW0mzGmSERuAj4FEoEXjTG/RtksRVEUpYapVeIDYIyZDcyOth2KoihK+Kht1W6KoihKHSCmx/MRkZ3ABk9RC2BXlMyJBPF8fnpusUk8nxvE7/kdYoyJarhwTIuPPyKSEe0BksJJPJ+fnltsEs/nBvF/ftFEq90URVGUiKPioyiKokSceBOfqdE2IMzE8/npucUm8XxuEP/nFzXiqs1HURRFiQ3izfNRFEVRYgAVH0VRFCXixI34xMMIqCKyXkSWisgiEcmwy5qJyOcissr+39QuFxH5t32+S0Tk/9u7l1CrqjiO498fZUIlpEniIEgrAqnIW4gDkaC4dp1o0eA2yR7QxKAGQYYNnBbVpKKBJVmEQi8KQtMiMKIUzEea+OgxSOw6MKxJIflvsNbF3eHc433U3mft+/vA4ay7zj6wfqzN/XPW2WftgWZH/2+SNkk6LelQpW/CWSStyccfl7SmiSzdjJFvg6STef72S1pZee2ZnO+opBWV/r47byVdK+kLSd9LOizpidxf/Pz1yNaKuStKRBT/IO0D9wOwELgMOAAsanpck8jxMzC3o+95YF1urwOey+2VwDZAwFJgd9Pj7xj3cmAAODTZLMAc4Mf8PDu3ZzedrUe+DcBTXY5dlM/JmcCCfK5e0q/nLTAfGMjtWcCxnKH4+euRrRVzV9KjLZ982nwH1FXA5tzeDKyu9L8VyTfAVZLmNzHAbiJiF3Cmo3uiWVYAOyPiTET8BuwE7vn/R39xY+Qbyypga0T8FRE/ASdI52xfnrcRcSoivs3tP4AjpJs6Fj9/PbKNpai5K0lbis9F74BaiAB2SNor6bHcNy8iTuX2r8C83C4x80SzlJjx8bz0tGl0WYqC80m6DlgM7KZl89eRDVo2d/2uLcWnLZZFxAAwBKyVtLz6YqR1gFZcG9+mLBWvAdcDtwGngBebHc7USLoSeB94MiJ+r75W+vx1ydaquStBW4pPK+6AGhEn8/Np4EPSR/uR0eW0/Hw6H15i5olmKSpjRIxExN8RcR7YSJo/KDCfpBmkf87vRMQHubsV89ctW5vmrhRtKT7F3wFV0hWSZo22gUHgECnH6FVCa4CPcvtj4MF8pdFS4GxlSaRfTTTLp8CgpNl5GWQw9/Wlju/c7iXNH6R8w5JmSloA3AjsoU/PW0kC3gCORMRLlZeKn7+xsrVl7orS9BUP/9WDdMXNMdIVKOubHs8kxr+QdMXMAeDwaAbgauBz4DjwGTAn9wt4Nef9Drij6QwdebaQli/OkdbDH51MFuAR0pe8J4CHm851kXxv5/EfJP0jml85fn3OdxQY6ufzFlhGWlI7COzPj5VtmL8e2VoxdyU9vL2OmZnVri3LbmZmVhAXHzMzq52Lj5mZ1c7Fx8zMaufiY2ZmtXPxMRunbjtZ5/6lkjbm9hJJu/Jux/skvS7pckkPSQpJd1fetzr33V93FrOmufiYjd+bdN8YcwjYLmke8C7wdETcFBGLge2k3ZMh/Y5kuPK+B0i/6zKbdlx8zMYpxt7J+i7Sjy7XApsj4uvKe96LiJH855fAEkkz8t5iN5B+5Gg27bj4mE2BpLnAuYg4C9wM7O1xeJCK1ArS9vvejsWmLRcfs6kZBHZM4PitpKW3YdIWPWbTkouP2dQMkb7XgbQn3+29Do6IPcAtpDvWHvufx2bWty5tegBmpco7JN/Khe9tXgH2SPokInbnY+4Dvup46zrgz9oGataHXHzMxknSFuBOYK6kX4CXgX2Rd+eNiBFJw8ALkq4BzgO7uPDJiHzctloHbtaHvKu12SRJehY4ERFbmx6LWWlcfMzMrHa+4MDMzGrn4mNmZrVz8TEzs9q5+JiZWe1cfMzMrHYuPmZmVrt/ADeow1YogosYAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "from numpy import alen, arange\n", + "\n", + "from jcamp import JCAMP_calc_xsec, JCAMP_reader\n", + "\n", + "filename = 'jcampdata/jcamp-examples/data/infrared_spectra/methane.jdx'\n", + "jcamp_dict = JCAMP_reader(filename)\n", + "plt.plot(jcamp_dict['x'], jcamp_dict['y'])\n", + "plt.title(filename)\n", + "plt.xlabel(jcamp_dict['xunits'])\n", + "plt.ylabel(jcamp_dict['yunits'])\n", + "\n", + "JCAMP_calc_xsec(jcamp_dict, skip_nonquant=False, debug=True)\n", + "plt.figure()\n", + "plt.plot(jcamp_dict['wavelengths'], jcamp_dict['xsec'])\n", + "plt.title(filename)\n", + "plt.xlabel('um')\n", + "plt.ylabel('Cross-section (m^2)')\n", + "\n", + "filename = 'jcampdata/jcamp-examples/data/uvvis_spectra/toluene.jdx'\n", + "plt.figure()\n", + "jcamp_dict = JCAMP_reader(filename)\n", + "plt.plot(jcamp_dict['x'], jcamp_dict['y'], 'r-')\n", + "plt.title(filename)\n", + "plt.xlabel(jcamp_dict['xunits'])\n", + "plt.ylabel(jcamp_dict['yunits'])\n", + "\n", + "filename = 'jcampdata/jcamp-examples/data/mass_spectra/ethanol_ms.jdx'\n", + "jcamp_dict = JCAMP_reader(filename)\n", + "plt.figure()\n", + "for n in arange(alen(jcamp_dict['x'])):\n", + " plt.plot((jcamp_dict['x'][n],jcamp_dict['x'][n]), (0.0, jcamp_dict['y'][n]), 'm-', linewidth=2.0)\n", + "plt.title(filename)\n", + "plt.xlabel(jcamp_dict['xunits'])\n", + "plt.ylabel(jcamp_dict['yunits'])\n", + "\n", + "filename = 'jcampdata/jcamp-examples/data/raman_spectra/tannic_acid.jdx'\n", + "jcamp_dict = JCAMP_reader(filename)\n", + "plt.figure()\n", + "plt.plot(jcamp_dict['x'], jcamp_dict['y'], 'k-')\n", + "plt.title(filename)\n", + "plt.xlabel(jcamp_dict['xunits'])\n", + "plt.ylabel(jcamp_dict['yunits'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/jnb.conf b/jnb.conf new file mode 100644 index 0000000..907b11e --- /dev/null +++ b/jnb.conf @@ -0,0 +1,37 @@ +# -------------------------------------------------- +# Noto Jupyter notebook configuration +# -------------------------------------------------- +# Feel free to change this file. +# +# PLEASE NOTE: +# - Your changes to this file might get lost in case +# of a server upgrade. +# - You need to logout/login again for your changes +# to be taken into account. +# +# -------------------------------------------------- + +# -------------------------------------------------- +# Select the default jupyter interface you wish use. +# +# Available options are: +# - labhub (/usr/local/bin/jupyter-labhub) +# - notebook (/usr/local/bin/jupyterhub-singleuser) +NOTO_INTERFACE=labhub + +# -------------------------------------------------- +# Directory where your virtual environments +# are created +MY_VENVS=~/my_venvs + +# -------------------------------------------------- +# Directory where your notebooks are stored +MY_NOTEBOOKS=~/my_notebooks + +# -------------------------------------------------- +# Activate debug mode. +# Debug log file: /var/log/jupyter.log +# Available options are: "on" and "off" +NOTO_DEBUG=off + +# EOF diff --git a/nmr_test.ipynb b/nmr_test.ipynb new file mode 100644 index 0000000..643b1e7 --- /dev/null +++ b/nmr_test.ipynb @@ -0,0 +1,220 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Reading NMR data: an example #" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Getting ready (only needed once) ##\n", + "First we need to install a module that knows how to read NMR data from various vendors. Fortunately there is one at https://nmrglue.readthedocs.io/en/latest/tutorial.html" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install nmrglue" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unarchive the 30.zip file that you have uploaded to your home directory into the nmrdata folder; -o overwrites an existing 30 subdirectory in nmrdata (otherwise unzip will ask the user but you can't answer inside a Jupyter notebook..." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Archive: 30.zip\n", + "replace nmrdata/30/uxnmr.par? [y]es, [n]o, [A]ll, [N]one, [r]ename: ^C\n" + ] + } + ], + "source": [ + "! unzip -o 30.zip -d nmrdata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import the necessary Python modules ##" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "import nmrglue as ng\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "dic,data = ng.bruker.read(\"nmrdata/30\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "print(data.ndim)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(16384,)\n" + ] + } + ], + "source": [ + "print(data.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we know this is a 1-dimensional spectum with 16384 points. We don't know about the units or values of the x-axis, so let's build a vector x with 16384 values evenly spaced between 0 and 1. Note that we are looking at the real part of the data elements - the array actually contains complex numbers but I'm skipping this part." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEWCAYAAABv+EDhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3deXxU9b3/8dcnGyELW8K+hR0RRCC4AYorLhSrta61Rb36s1qX2uq1FVuX2vaqVa/V1qVa2ut2te2lirbuKC6oQRFZFRTZlB3CFkjI5/fHDJhAMgQyMycz5/18PPJ4zJxz5pzPIeF85rubuyMiIuGTEXQAIiISDCUAEZGQUgIQEQkpJQARkZBSAhARCSklABGRkFICkLRnZueZ2UsJOvdEM/tVAs67yMyOi/d5RWpSApC0YGYjzewdM9tgZmvN7G0zGw7g7o+7+wlBx7g7M3Mz22xmm8xsmZndZWaZ+3iO0Wa2NFExSnrLCjoAkcYysxbAZOCHwNNADjAK2BZkXA002N0XmFl/YArwKfBAsCFJWKgEIOmgL4C7P+nuO9x9q7u/5O4zAcxsvJm9tfPg6Dfvy8zsMzPbaGa3mlmvaAmi3MyeNrOc6LGjzWypmf3czFZHq2bOqy8QMxtrZjPMbH30fAc15AbcfR4wFRhYxzmbmdk9ZrY8+nNPdFs+8C+gU7QUscnMOu3LP5yEmxKApINPgR1m9hczO8nMWjfgM2OAYcBhwHXAQ8D3gK5EHsLn1Di2A1AMdAZ+ADxkZv12P6GZDQEeBf4fUAQ8CDxrZs32FoyZDSBSavmojt03ROM8GBgMHAJMcPfNwEnAcncviP4s3/uti0SkXAIws0fNbKWZzWrg8Wea2Rwzm21mTyQ6Pkk+dy8HRgIOPAysMrNnzax9jI/d7u7l7j4bmAW85O6fu/sGIt+qh+x2/I3uvs3d3wCeB86s45yXAA+6+3vRkshfiFRDHRYjjg/NbB3wHPAn4M91HHMecIu7r3T3VcDNwPkxzinSICmXAICJwIkNOdDM+gA/A0a4+4HA1QmMSwLk7nPdfby7dyHyDb4TcE+Mj6yo8XprHe8LarxfF/22vdOX0fPvrjvwk2j1z3ozW0+kRBGrWmaou7d2917uPsHdq+s4plP0mnu7vsg+SbkE4O5vAmtrbovW3/7bzKab2dRogxrAxcD97r4u+tmVSQ5XAhCtT59IHfXp+6l1tL59p25AXVUtS4Db3L1VjZ88d3+ykddfTiS51HV9Tecr+y3lEkA9HgKucPdhwE+BP0S39wX6RrsETjOzBpUcJLWYWX8z+4mZdYm+70qkDn9aHC9zs5nlmNkoYCzwTB3HPAxcamaHWkS+mZ1iZoWNvPaTwAQza2tmxcAvgMei+1YARWbWspHXkBBK+W6gZlYAHAE8Y2Y7N+9sdMsC+gCjgS7Am2Y2yN3XJztOSaiNwKHANWbWClhPpFvotXE6/9fAOiLfurcAl0ZLGbW4e5mZXQzcR+TvbivwFvBmI6//K6AFMDP6/pnoNtx9npk9CXweHUMwQA3B0lCWigvCmFkJMNndB0b7gM939451HPcA8J67/zn6/lXgenf/IJnxSuoys9HAY9G2BZG0kvJVQNEeIF+Y2XcBokXvwdHdk4h8+ydadO4LfB5EnCIiTU3KJYBocfddoF90gM5FRLrJXWRmHwOzgVOjh78IrDGzOcDrwLXuviaIuEVEmpqUrAISEZHGS7kSgIiIxEdK9QIqLi72kpKSoMMQEUkp06dPX+3ubXffnlIJoKSkhLKysqDDEBFJKWb2ZV3bVQUkIhJSSgAiIiGlBCAiElIp1QYgIrI/KisrWbp0KRUVFUGHklC5ubl06dKF7OzsBh2vBCAiaW/p0qUUFhZSUlJCjTnD0oq7s2bNGpYuXUqPHj0a9BlVAYlI2quoqKCoqChtH/4AZkZRUdE+lXKUAEQkFNL54b/Tvt5jaBKAu/NM2RK2Ve0IOhQRkSYhNAngxdkruPZvM7n75c+CDkVEhJtuuok777yz3v2TJk1izpw5CY0hNAmgvKISgNWbtgUciYjI3ikBiIikkdtuu42+ffsycuRI5s+fD8DDDz/M8OHDGTx4MN/5znfYsmUL77zzDs8++yzXXnstBx98MAsXLqzzuMZSN1ARCZWbn5vNnOXlcT3ngE4t+OW3Dox5zPTp03nqqaeYMWMGVVVVDB06lGHDhnH66adz8cUXAzBhwgQeeeQRrrjiCsaNG8fYsWM544wzAGjVqlWdxzVG6BKAlj8QkSBMnTqV0047jby8PADGjRsHwKxZs5gwYQLr169n06ZNjBkzps7PN/S4fRGaBJD+HcBEpCH29k092caPH8+kSZMYPHgwEydOZMqUKY06bl+oDUBEJAmOPPJIJk2axNatW9m4cSPPPfccABs3bqRjx45UVlby+OOP7zq+sLCQjRs37npf33GNoQQgIpIEQ4cO5ayzzmLw4MGcdNJJDB8+HIBbb72VQw89lBEjRtC/f/9dx5999tnccccdDBkyhIULF9Z7XGOk1JrApaWlvr8LwjxTtoRr/zaT04d25q4zD45zZCLSlM2dO5cDDjgg6DCSoq57NbPp7l66+7GhKQGEYRi4iMi+CE0CEBGR2pQARCQUUqm6e3/t6z2GLwGk/9+AiOwmNzeXNWvWpHUS2LkeQG5uboM/o3EAIpL2unTpwtKlS1m1alXQoSTUzhXBGio0CUBEwis7O7vBq2SFSfiqgEREBFACEBEJLSUAEZGQUgIQEQkpJQARkZAKXQJI317AIiL7JjQJQFMBiYjUFpoEICIitSkBiIiElBKAiEhIBZ4AzCzTzD4ys8nJuF46TwYlIrIvAk8AwFXA3ERfpGYj8KLVm9mwpTLRlxQRadICTQBm1gU4BfhTsq45acZyRt85hTH3vJmsS4qINElBlwDuAa4Dqus7wMwuMbMyMyuL51SuX5dXxO1cIiKpKLAEYGZjgZXuPj3Wce7+kLuXuntp27ZtkxSdiEj6C7IEMAIYZ2aLgKeAY8zssURdzLQkjIhILYElAHf/mbt3cfcS4GzgNXf/XlDxiIiETdBtACIiEpAmsSSku08BpgQchohIqIS6BLBpW1XQIYiIBCbUCeC8P70XdAgiIoEJdQL4eMn6oEMQEQlMqBOAiEiYhSYBaEEYEZHaQpMARESkNiUAEZGQUgIQEQkpJQARkZBSAojaUe38ffpSbnp2NtXVWjVMRNJfk5gKoim477UF3P3KpwCcMawLAzu3DDgiEZHEUgkg6tOVG4MOQUQkqUKTACzGQIBZyzbw/MyvkhiNiEjwQlMFVLWj7lUnL5r4Af07FiY5GhGR4IWmBFBZTwJ4dd7KPbbd+dJ83NUQLCLpLTQJIJb7X19Y6/2U+as0VbSIpD0lgHrEajMQEUkHSgD1GPjLF/n79KW73q/bvJ0Jkz5hW9WOAKMSEYkfJYAYnnx/MRu2VrJ4zRZuf3Eej01bzKSPlgUdlohIXCgBxFD25ToG3/wSR97xOtXRNuT//PsnrNm0LdjARETiIDQJwIhfnf5nKzfF7VwiIkEJTQIQEZHaQpMA3l+0tlGff3r6kl2vl67byqjbX6Pk+ud5/4vGnVdEJCihSQBT5q9q1Odrjgv76TMfs2TtVgDOfPDdRp1XRCQooUkAIiJSW2gSgMZ1iYjUFpoEICIitSkBxMHiNVuCDkFEZJ8pAcTBkXe8DoC7s2W7JpETkdQQmvUAEq3k+ucxi/QW+vP44RzVty23TJ7Dy3NW8NQlh9G1TV7QIYqI1BJYCcDMuprZ62Y2x8xmm9lVQcUSLzu7il4w8QOem7mcie8sYtn6rdz+4nwAPly8jvVbtgcYoYjIN4IsAVQBP3H3D82sEJhuZi+7+5wAY4qbN2qMO3ju4+U89/HyXe+vPLYPPz6uj6acFpFABVYCcPev3P3D6OuNwFygc1DxxNs/Yswaeu+rnzFrWXkSoxER2VOTaAQ2sxJgCPBeHfsuMbMyMytbtWr/R/M2te/ajpacFJFgBZ4AzKwA+Dtwtbvv8bXY3R9y91J3L23btm3yA0yQ37wwjz43vMDr8/dck1hEJBkCTQBmlk3k4f+4u/8jsddK5Nn33bufr6Fyh3PBnz/g9fkruebpGSxavTnosEQkRILsBWTAI8Bcd78rqDiaggv+/AH/+HAZo++cUmv7qNtf466XPw0mKBFJe0GWAEYA5wPHmNmM6M/JAcbTJMxZXk5F5Q5OuPsNlqzdyr2vfsbLc1bwwBsLgw5NRNJMYN1A3f0tml7bbOBOvnfqHtsu/msZAMf2b8cXqzeT3yyLDVsr2VHtzP96I099sITXfnoULXKzkx2uiKQwjQROIcff/Wa9+2Yu2cDIPsVJjEZEUl3gvYCSJZ5rAjdF33vkPXZUq2upiDRcaBJAGCZp6/XzFyi5/nlKrn+eyTO/GXm8sryCR976Andn3ebtjP39VL5cox5HImEXmgRQXpH+CaCmHz3xEec/8h7/M+1L/uOvZdw6eQ4LVm7igokfMGtZOQ+88TkA67dsZ8OWSu58cT4/+8cnuDuvzVtB5Y7qgO9ARBJNbQBpbOpnq5n62epd78988F3WbakEYObS9QAcfMvLtT5zWM82XPXUDABm3TyGgmaRP5HFa7Zw03OzufXbA3lgykJuHDuAnKzQfH8QSUvmnjr1xqWlpV5WVrZfny25/vk4R5P+rjq2Dz8+vi+w57/f3WcN5rQhXYIIS0T2kZlNd/fS3beH5itc1zbNgw4h5WzZXsWmbVU89f7iPfZ9+OX6ACISkXiKWQVkZkcDVwD9opvmAve5+5QExyVNwMNTv+DhqV/Uue9/pn3JD44ooXe7giRHJSLxUm8JwMxOAR4FngPOBc4DXgAeTcURu+neDTQIx931BvO+jszft72qmhXlFQCc9eC7PF22JMjQRKQBYpUArgW+7e4f19g2w8zKgN8TSQYScifeM5UHvjeUSx/7sNb2975Yy5mlXQOKSkQaIlYC6LDbwx8Ad59pZu0TGJOkmN0f/juVXP88px7ciayMDH535uAkRyUiexOrETjWSKGUG0WkBViC8c8Zy/n7h0t5Z8FqyhatpXJHNU+8t5h1m7U2skjQYpUAepnZs3VsN6BnguKRNHXun2ov9vbz//uEHx/Xl7tf+ZQrj+nNZUf35k9TP+eSI3tpfIFIksRKAKfG2HdnvAOR8Ln7lchaB/e+toCPlqxn6merufOlT5ny09GsKK+gtKQNmRlqvBdJlHoTgLu/kcxAJNxqjljeuTBOSVEeQ7q15oVPvuKVa47ihU++YkCnFozqs+fSoK/PW8ns5Rv4bmlX2rfITVbYIimt3gRgZp9A/RXn7n5QQiISiVq0ZguL1mwBYNTtr+/a/tcLD6F/h0I2bquiZ3E+O6qdCyZ+AMDkmV/x76uPZMOWSrKzjLwczXYiUp9Y/zvGJi2KJNA4gPTx/Uffr3ffvK837pq2IsPg0fHDWbJ2C+cfXsKjb33BLZPn8OLVR9KvQ2GywhVpsmIlgI7uPi1pkSSYegGFT7XD+D9HSgY3/nP2ru1j7nmTf1x2BD2L82mVlxNUeCKBi5UA/gAMBTCzd9398OSEJJJ4p//hnV2vp153NF3b5O1xzPaqajIMsjK/6ZW0auM22hY2S0qMIokWKwHUrDNJ+Va1JWu3Bh2CNFE12xcArjimN9mZGdz18qcM7NyCyVeMAqBs0VrOeOBdmmVl8N7Pj2X9lkrat8ileU5mEGGLNFqsBJBhZq2JDBbb+XpXUnD3tYkOTiQIv39twa7Xs5aV7zEV9raq6l3rKIzsXcxj/3FoUuMTiZdYCaAlMJ1vHvo1x/s7GgwmwlsLVtdKEEf0KuLCET1Yu3k7Azq14IePT+eGkw/gmP6R2VNqDnJbsHIjmRkZ9CjOT3rcIhB7HEBJEuMQSQvvLFzDOwvX1NpW11xJv/zWAG5+bg4A799wLM/P/IpFqzdz/uHdWVm+jc6tm5NhRnlFJQd2apmU2CV8tCKYSAro1Tafcw/tzojeRbTJz2HBik30bl9Au8JctldV85d3FtGnfQFH9W3LrZPnctwB7Rjeow3ZmZpWQ+pfEUyjZERSwMJVm7l18pwGH//o23su5FPYLIvHLz6U3OxMurbOY1vVDl6du5LvDOtCeUUlc5aXc1jPoniGLU2cEoBISGzcVsW4+97eY/tPntlj1vddJl0+gs6tmuPutMnP4Yn3F3POId1UskgT+5wAzKwVcLm735aAeESkCfn2/XsmjF/UGFS30xMXH0pJUT5t8nPYtK2K4oJmbNhSScu8bFZv2samiiq6F+Xx1YYK8nIyNQCviYg1F1BX4EagEzAJeBK4BTg/+lpEBIBzH35v7wfFcMKA9jTPyaRyRzWHlLTh+AM78PGS9Qzp1oqOLZvvOu6VOStolZfNsO6tmb28nA4tcyku0MC8/RWrBPBX4A3g78CJQBkwAzjI3b9OQmwiEhIvzVmx6/ULn3zNTc81vL2jPrnZGVRUVjOydzEAvdsVcPyA9ixbv5VvH9yZrZU7yM3OICczA3fIqGPq8fKKStwhPyeT9Vsr0y7Z1NsLyMw+dvfBNd4vBbq5e3WygtudegGJSFPTsWUuX22ooE+7Ajq2ak5JUR5H9W3L3K/KObp/OzZVVJGXk8WHi9fRtrAZzbIyyM7MoH2LXFrlZZObnUmL3Cx2VHutaUfiab96Ae02+ncN0NLMDOIzEtjMTgT+G8gE/uTuv23sOUVEkumrDRUAfLZyE5+t3MSbwF/f/RKAO1/6NG7X+eI3JxN9/MZNrHSzcyTwzp8WREYDTydSHdQoZpYJ3A+cBAwAzjGzAY09r4hIOrqvxhQl8RLkSOBDgAXu/jmAmT1FZBnKxlf+7eaxaV/G+5QiIkm1fEP8J7SM1QtoaKwPuvue49v3TWdgSY33S4E9ZtUys0uASwC6deu2Xxcqr6jcr8+JiDQVR/Qqjvs5Y7UBlAGzgJ2LtdasfHLgmLhHUwd3fwh4CCKNwPtzjstG9+b2f8+Pa1wiIsmUEef6f4idAK4BzgC2Ak8B/+fum+J47WVA1xrvu0S3iYjIbk44sH3czxmrDeAe4B4z6wmcDbxqZl8Cv3b3GXG49gdAHzPrQeTBfzZwbhzOKyISmKwMY3S/doBz+tAuzFleTrc2efxt+lIO61VEm7xs5q/YxKVH9eTrDRW0ysuhe1EeW7fvoHV+ckdI73UqCHf/3Mz+CTQnMgq4L5EBYY3i7lVm9iPgRSLdQB919z3HmIuINELf9gV8umIT3z64E+cc0o3nP/mKM0u7UlXtdGqZy9bKHWSY0alVczIzjE3bqli7aTudWzfHiAwQ27ytis3bqmjXYt8XRzx5UEcAzhzedY993Yu+WQsiNzv5K8vFagTe+c3/VCKNtU8R+fYft6Zod38BeCFe5xOR1HdU37acOLADX6zezJgD23Nw19ZUVO4gLyeTKfNX0bVNc0qK8pm5bAP92heSF12Ss6F95A/dy4ynBc2yKGhW+9GY3yyL/GbpN3dmrDtaAMwE/gmUA92AH+78R3b3uxIenYikhFtPPZCC3CyWr6+gRfNsTj24E4vXbKF/h8I9Rrdur6qOjnq1Bs8quvPhe3T/dru2De3WOn43EFKxEsAtRHr7ABQkIRYRaWIuP7oXB3VpxaDOLVm0ejNPly3hR8f0oaJyB/06FJIZ/UJY1zw6AzvXvZJZzWUxJVixGoFvSmIcIpJAzbMz6dy6OfecdTC92xWQm53Jh4vXMWX+Ki4a2YMn31/Ml2s2c/O4gfU+oDu1as4RvePfF12CE6sN4BcxPufufmsC4hGROhQ2y+K+84bSsnk25VsraZ2Xw7L1WzjugPZkZhgPvvk5Zw/vSmaG8emKjfRpX8iWbTsoyN2zPnunod1a76pGufSoXsm8HWkiYlUBba5jWz5wEVAEKAGI7KdTDurI8zO/AuDXpw3izpfms3bzdp659HC++8C7XDiiB98Z1plmWRn0bldY5zkGdfmmiqXmA3xY9zYAtMjNTuAdSDpo0KLwZlYIXEXk4f808Dt3X5ng2Pag6aAlFZQU5XFk37acWdqVSR8t47ulXenXoe6HuEgy7O900G2IjAg+D/gLMNTd1yUmRJHU9MKVo9haWUXP4oI9BvLU1xAq0hTEagO4AzidyDw8g+I8DYRIk3VWaVd+cEQJt0yezUUje9IqL5vf/mseEy8YzqCbXgLglEEdufSoXrTOz6ZL67yAIxbZP7FWBKsGtgFVfNMdFCKTwrm7t0h8eLWpCkgS4YheRfzxvGG8+/lqhnVvQ9vC+pf9q6527n3tM35weEnSh+2L7K99rgJyd3XWlZQ3/ogSJr6zqNa2gZ1bMPmKUUBkqvCdjaUnDuy41/NlZBhXH9c37nGKBCH9xjaL1HDTuAP50TG9WbVxGx1b5lKYm01mjUFL6ikjYaZv+ZJy7j5rMKP6FNOzOJ+zSrtSUvRNHfwfzxvKXWcOBuCikT0AKC5oxgEdW9AqL6fWw18k7FQCkCbt6uP6UF3tHNWvLYM6t+LrDRV0K8rjtCFdah23oryC3KxMWuZFvtGfPrRLXacTkRqUAKRJGV7SmvMO7c7V/zuD/h0K96hv71ZUd4+b9vsxTa9I2CkBSGBa5WWTm5VJTlYG/7pqFK/PX8nYgzoB0Do/h4Gdkt7RTCRU1AYgSXHKQZEeNpMuH7Fr23Vj+jPt58fy5nVHk98sa9fDHyJzwhcV1N8dU0QaTyUASagbxw7g2P7tKCnO5/7ogp9TfjqatoXN0nKBDZFUov+B0mj/vHwEp97/NgCH9WzD/K83ct+5QxnUpWWd3SxLivP32CYiyacEII02uGsrPrnpBDZv20GHlmqMFUkVSgCy3zIzjA9uOA6AwtxsCjWoSiSlqBFY6vWrbw9k3q0n0qdd3SuC/vG8obTRfDgiKUsJQOp1WM8icrMzOaJX0R77BndpyQkHdgggKhGJFyWAkMnNjv0rv+lbAwD4/TlD6B395j9h7IBd+/99dWQStRtOGbDnh0UkpagNIASOH9Cel+esYM4tY8jMMI66fQq/+NYARvUppqBZFq/OXUlGBhzdrx1mxvgRPWp9PjszgyuP6c29ry2gZ3EBi357SkB3IiLx1KAlIZsKrQfQcGMObM+gzi05un87DuykValEwmy/loSU1HHKQR359WmDyM/J5PevLeA/RvVQrxwRiUltACnk9KGd69133zlDaNk8m6zMDH58fF89/EVkr1QCSBE/Pq4vlx/di2ZZGeTnZPHu52tYu3k7azdvZ9LlIzDTPPcism+UAFLAez8/dtd0x785/aCAoxGRdKEE0IQsuO0kMjMMM2PR6s1srKiibWEzzXUvIgkRSBuAmd1hZvPMbKaZ/Z+ZtQoijqbgjWtHc8qgjmRmGFmZGbuqckqK8xnUpaXm1hGRhAmqBPAy8DN3rzKz/wJ+BvxnQLEE4roT+3HZ6N4A3H/e0ICjEZEwCqQE4O4vuXtV9O00IHQLuBpqtBWRYDWFbqAXAv+qb6eZXWJmZWZWtmrVqiSGlVgDO2u5QxEJVsISgJm9Ymaz6vg5tcYxNwBVwOP1ncfdH3L3Uncvbdu2baLCTbg7vzt41+vxR5Qwqk/q3ouIpIeEtQG4+3Gx9pvZeGAscKyn0nwUDfT7c4ZwxZMfAXDtmH4c3S/ywD+ztAs3jtVEaiISvEAagc3sROA64Ch33xJEDIk0/ogSxh7UkW8N7lRruyZRE5GmJKheQPcBzYCXo90ep7n7pQHFEjfFBc0omxCz4CMi0mQEkgDcvXcQ102UebeeyNJ1W2iT3yzoUEREGkwjgeMgNzuT3u0Kgw5DRGSfNIVuoCIiEgAlgEbo2DKXhb8+OegwRET2ixJAI1w4ogeZGRrRKyKpSW0A+2nCKQdwwW5r54qIpBIlgP2w4LaTyMpU4UlEUpueYg30w9G9AJh50wl6+ItIWlAJoIEuG92L/zyxf9BhiIjEjRLAXrxyzZGUV1RpkXURSTtKAPUY0LEFj44frhW5RCRtKQHU44WrRgUdgohIQqk1U0QkpJQA6nDlMWk1V52ISJ2UAIA/7LYoe3GhZvUUkfQXmgQwsndxnds/uvF4Wjav3cPnnEO6JSMkEZFAhSYB1Kd1fg5dW+ften/OId3I1kAvEQmB0DzprI452w7s1AKAbkV5TDjlAAAKc9UxSkTCIdRPu6waM3leMKIH7nD+4d0DjEhEJHlCkwDcY+/PzDAuPrJncoIREWkCQlMFJCIitSkBiIiElBKAiEhIhTsB1NU1SEQkJMKdAEREQiw0CUBf9kVEagtNAhARkdpCkwD2Ng5ARCRsQpMARESktlAngLYFmvZZRMIrNAmgrkbg3313cPIDERFpIgJNAGb2EzNzM6t7sv4EapWXTcu87L0fKCKSpgJLAGbWFTgBWBxUDCIiYRZkCeBu4DogKf1z1AtIRKS2QBKAmZ0KLHP3jxtw7CVmVmZmZatWrYpbDFkZoWn+EBGpU8LWAzCzV4AOdey6Afg5keqfvXL3h4CHAEpLS+PyPf7KY/swbnDHeJxKRCRlJSwBuPtxdW03s0FAD+Bji3TN6QJ8aGaHuPvXiYqnpmuO75uMy4iINGlJXxHM3T8B2u18b2aLgFJ3X53I62ouIBGR2lQRLiISUoGvCezuJUHHICISRioBiIiElBKAiEhIhSYBtM7LAaBPu4KAIxERaRpCkwDycjIBuHBkj4AjERFpGkKTAEREpDYlABGRkFICEBEJqdAkgJysyK1mZmhIsIgINIGBYMny0zH9aJ6TyWlDOgcdiohIkxCaBNAiN5ufnXRA0GGIiDQZoakCEhGR2pQARERCSglARCSklABEREJKCUBEJKSUAEREQkoJQEQkpJQARERCytw96BgazMxWAV/u58eLgYQuPN8E6Z7DQfccDo255+7u3nb3jSmVABrDzMrcvTToOJJJ9xwOuudwSMQ9qwpIRCSklABEREIqTAngoaADCIDuORx0z+EQ93sOTRuAiIjUFqYSgIiI1KAEICISUmmXAMzsRDObb2YLzOz6OvY3M7P/je5/z8xKkh9lfDXgnq8xszlmNtPMXjWz7kHEGU97u+caxzXMAwQAAAToSURBVH3HzNzMUrrLYEPu18zOjP6eZ5vZE8mOMd4a8HfdzcxeN7OPon/bJwcRZzyZ2aNmttLMZtWz38zs3ui/yUwzG9qoC7p72vwAmcBCoCeQA3wMDNjtmMuAB6Kvzwb+N+i4k3DPRwN50dc/DMM9R48rBN4EpgGlQced4N9xH+AjoHX0fbug407CPT8E/DD6egCwKOi443DfRwJDgVn17D8Z+BdgwGHAe425XrqVAA4BFrj75+6+HXgKOHW3Y04F/hJ9/TfgWDNL5ZXi93rP7v66u2+Jvp0GdElyjPHWkN8zwK3AfwEVyQwuARpyvxcD97v7OgB3X5nkGOOtIffsQIvo65bA8iTGlxDu/iawNsYhpwJ/9YhpQCsz67i/10u3BNAZWFLj/dLotjqPcfcqYANQlJToEqMh91zTRUS+QaSyvd5ztGjc1d2fT2ZgCdKQ33FfoK+ZvW1m08zsxKRFlxgNueebgO+Z2VLgBeCK5IQWqH39/x5TaBaFFzCz7wGlwFFBx5JIZpYB3AWMDziUZMoiUg00mkgJ700zG+Tu6wONKrHOASa6++/M7HDgf8xsoLtXBx1Yqki3EsAyoGuN912i2+o8xsyyiBQd1yQlusRoyD1jZscBNwDj3H1bkmJLlL3dcyEwEJhiZouI1JU+m8INwQ35HS8FnnX3Snf/AviUSEJIVQ2554uApwHc/V0gl8iEaemsQf/fGyrdEsAHQB8z62FmOUQaeZ/d7ZhngR9EX58BvObR1pUUtdd7NrMhwINEHv6pXjcMe7lnd9/g7sXuXuLuJUTaPca5e1kw4TZaQ/6uJxH59o+ZFROpEvo8mUHGWUPueTFwLICZHUAkAaxKapTJ9yzw/WhvoMOADe7+1f6eLK2qgNy9ysx+BLxIpBfBo+4+28xuAcrc/VngESJFxQVEGlvODi7ixmvgPd8BFADPRNu7F7v7uMCCbqQG3nPaaOD9vgicYGZzgB3Ate6esiXbBt7zT4CHzezHRBqEx6f4lznM7Ekiibw42rbxSyAbwN0fINLWcTKwANgCXNCo66X4v5eIiOyndKsCEhGRBlICEBEJKSUAEZGQUgIQEQkpJQARkZBSAhDZB2a2aS/7S+qbyTHGZyaa2RmNi0xk3ykBiIiElBKACGBmw6Pzq+eaWX50Tv2BMY4viK6t8KGZfWJmNWeqzDKzx81srpn9zczyop8ZZmZvmNl0M3uxMbM4isSDBoKJRJnZr4hMJ9AcWOruv6njmE3uXhCdRyrP3cujUy9MIzL3TnfgC2Cku79tZo8Cc4D/Bt4ATnX3VWZ2FjDG3S80s4nAZHf/WzLuU2SntJoKQqSRbiEyB00FcOVejjXg12Z2JFBNZEre9tF9S9z97ejrx6Ln+jeRCepejk7HkQns9xwuIvGgBCDyjSIicyZlEykJbI5x7HlAW2CYu1dGZx3Nje7bvVjtRBLGbHc/PK4RizSC2gBEvvEgcCPwOJGVxGJpCayMPvyPJlL1s1O36Pz0AOcCbwHzgbY7t5tZtpkdGNfoRfaREoAIYGbfByrd/Qngt8BwMzsmxkceB0rN7BPg+8C8GvvmA5eb2VygNfDH6LKGZwD/ZWYfAzOAIxJwKyINpkZgEZGQUglARCSklABEREJKCUBEJKSUAEREQkoJQEQkpJQARERCSglARCSk/j9cEcat7GNEmQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, 1, data.shape[0])\n", + "\n", + "plt.plot(x, data.real, label='data')\n", + "\n", + "plt.xlabel('x label')\n", + "\n", + "plt.title(\"Simple Plot\")\n", + "\n", + "plt.legend()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since we know NMR, we understand that this is not a frequency-domain spectrum - this is an FID (Free Induction Decay) and we need to perform a (Fast) Fourier Transform to obtain the spectrum. The result is also a series of complex numbers." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAEDCAYAAAAoWo9tAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de5gU9Z3v8fe3untuMNwGEBR00HAHuQ2IS1xFfFZWjUQjaqJmXS8cNXqiWeIaybqYnM0mJm6iZ5O4RD1q1qwJSVTixri6SnSDiIOCIqKoQUXkIiIXmVt3f88f3dMMwwAD3dU9PfN5Pc88011dXfWtvnz617/6dZW5OyIiUryCQhcgIiLZUZCLiBQ5BbmISJFTkIuIFDkFuYhIkVOQi4gUuYIFuZnda2abzWxVO+Y9xsz+28xeMbPFZjYoHzWKiBSDQrbI7wNmtnPeHwAPuPvxwLeAfw6rKBGRYlOwIHf3Z4GPW04zs+PM7A9mttzMnjOzEembRgFPpy8/A8zKY6kiIh1aR+sjXwBc5+6TgLnAT9LTVwLnpi+fA1SaWVUB6hMR6XCihS6gmZl1B/4CWGhmzZNL0//nAv9qZpcCzwIfAIl81ygi0hF1mCAn9e3gE3cf3/oGd99AukWeDvwvuPsnea5PRKRD6jBdK+6+A/izmc0GsJRx6ct9zay51m8A9xaoTBGRDqeQww//A3geGG5m683scuAi4HIzWwm8xp6dmqcAb5jZm8ARwD8VoGQRkQ7JdBhbEZHi1mG6VkRE5PAUZGdn3759vbq6uhCrFhEpWsuXL//I3fu1nl6QIK+urqa2trYQqxYRKVpm9m5b09W1IiJS5BTkIiJFTkEuIlLkOswvO5uamli/fj319fWFLkUKpKysjEGDBhGLxQpdikhR6TBBvn79eiorK6murqbFsVaki3B3tm7dyvr16xkyZEihyxEpKh2ma6W+vp6qqiqFeBdlZlRVVekbmchh6DBBDijEuzg9/yKHp0MFuYh0Qq8shIadha6iU1OQtxCJRBg/fnzmb926dSxevJiePXtmpp122ml85StfYfz48YwaNYry8vLMbb/+9a9zWs99993Htddem9NlNvvOd74TynJF9vLhSvjtFbDofxe6kk6tw+zs7AjKy8tZsWLFXtPWrVvHSSedxGOPPbbP/OvWreOss87a5z5ticfjRKOFf7jdHXfnO9/5DjfffHOhy5HOrvHT1P+dHxa2jk5OLfIQXXrppVx11VWccMIJ3Hjjjbz99tvMnDmTSZMmcdJJJ7FmzRoAfve733HCCScwYcIETjvtNDZt2nTA5c6fP59LLrmEE088kaFDh/Kzn/0MgF27djFjxgwmTpzI2LFjefTRR4HUB87w4cP58pe/zJgxY7j88supq6tj/PjxXHTRReE+CCISusI3Edtw6+9eY/WGHTld5qgje/CPnxt9wHmaww1gyJAhPPzwwwA899xzmemzZ89m3rx57V7v+vXrWbJkCZFIhBkzZnDXXXcxdOhQXnjhBa655hqefvppPvvZz7J06VLMjLvvvpvbbruN22+//YDLfeWVV1i6dCmffvopEyZM4Mwzz6R///48/PDD9OjRg48++oipU6dy9tlnA7B27Vruv/9+pk6dCsDChQvb9U1CJCd0uOxQdcggL5S2ulaA/XattMfs2bOJRCLs2rWLJUuWMHv27MxtDQ0NQCrsL7jgAj788EMaGxvbNY561qxZlJeXU15ezvTp01m2bBlnnnkmN998M88++yxBEPDBBx9kWvfHHHNMJsRF8kcjkfKhQwb5wVrOxaRbt24AJJNJevXq1eYHxXXXXcfXvvY1zj77bBYvXsz8+fMPutzWQ/XMjAcffJAtW7awfPlyYrEY1dXVmXHZzXWISOejPvI86dGjB0OGDGHhwoVAaqfjypUrAdi+fTtHHXUUAPfff3+7lvfoo49SX1/P1q1bWbx4MZMnT2b79u3079+fWCzGM888w7vvtnnESwBisRhNTU1ZbpVIe6lrJUwK8jx68MEHueeeexg3bhyjR4/O7IycP38+s2fPZtKkSfTt27ddyzr++OOZPn06U6dO5R/+4R848sgjueiii6itrWXs2LE88MADjBgxYr/3nzNnDscff7x2dkq49COvvCjIOTtramq89YklXn/9dUaOHJn3WorR/Pnz6d69O3Pnzi10KTmn10En895SuPd0GHwCXP5fha6m6JnZcnevaT1dLXIRCZ9GrYSqQ+7slANrz85QkY5BXSv5kJMWuZn1MrNfm9kaM3vdzE7MxXJFROTgctUivwP4g7ufZ2YlQEWOlisinYK6VsKUdZCbWU/gL4FLAdy9EWjMdrki0glo1Epe5KJrZQiwBfh/Zvaymd1tZvv8+sTM5phZrZnVbtmyJQerFRERyE2QR4GJwE/dfQLwKXBT65ncfYG717h7Tb9+/XKw2tzL9WFs77rrLh544IFQa87HOnLtkUceYfXq1YUuQ/JJo1ZClYs+8vXAend/IX3917QR5MUg14exveqqq0KpM4x15Oswu/F4nEceeYSzzjqLUaNGhb4+KTR1reRD1i1yd98IvG9mw9OTZgBqbpEaJviDH/wAgFNOOYUbbriBmpoaRo4cyYsvvsi5557L0KFD+eY3v5m5z+c//3kmTZrE6NGjWbBgQWb6Pffcw7Bhw5gyZQpXXnll5oQTrdfx93//90yZMoVhw4bx3HPPAXs+jCZOnMjEiRNZsmQJAIsXL+akk07i7LPPZtSoUdxyyy386Ec/yqxz3rx53HHHHXtt07p16xgxYgQXXXQRI0eO5LzzzmP37t0AfOtb32Ly5MmMGTOGOXPm0Pxjs1NOOYXrr7+empoavve977Fo0SK+/vWvM378eN5+++2cPuYiXVGummDXAQ+mR6y8A/xtVkt7/CbY+Gou6tpjwFj46+8ecJYwDmPbUklJCbW1tdxxxx3MmjWL5cuX06dPH4477jhuuOEGqqqquPfee+nTpw91dXVMnjyZL3zhCzQ0NPDtb3+bl156icrKSk499VTGjRvX5jri8TjLli3j97//PbfeeitPPfUU/fv358knn6SsrIy1a9fyxS9+keZf1r700kusWrWKIUOGsG7dOs4991yuv/56kskkDz30EMuWLdtnHW+88Qb33HMP06ZN47LLLuMnP/kJc+fO5dprr+WWW24B4JJLLuGxxx7jc5/7HACNjY2Zda5du5azzjqL884777AeRylG6loJU06C3N1XAPv8bLTYhHEY25aajw0+duxYRo8ezcCBAwE49thjef/996mqquLOO+/MfIC8//77rF27lo0bN3LyySfTp08fIPVh8uabb7a5jnPPPReASZMmsW7dOgCampq49tprWbFiBZFIZK/7TpkyJXPY3Orqaqqqqnj55ZfZtGkTEyZMoKqqap91DB48mGnTpgFw8cUXc+eddzJ37lyeeeYZbrvtNnbv3s3HH3/M6NGjM0F+wQUXZPXYSZHSqJW86Ji/7DxIy7lYlZaWAhAEQeZy8/V4PM7ixYt56qmneP7556moqOCUU07JHIb2UNcRiUSIx+MA/PCHP+SII45g5cqVJJNJysrKMvO3PrztFVdcwX333cfGjRu57LLL2lxHW4fQra+v55prrqG2tpbBgwczf/78vWrXYXRFwqNjrXQg27dvp3fv3lRUVLBmzRqWLl0KwOTJk/njH//Itm3biMfj/OY3vznk5Q4cOJAgCPj5z39OIpHY77znnHMOf/jDH3jxxRc5/fTT25znvffe4/nnnwfgF7/4BZ/97Gczod23b1927dp1wBNRV1ZWsnOnzqrepWjUSqgU5B3IzJkzicfjjBw5kptuuilzRp+jjjqKm2++mSlTpjBt2jSqq6vp2bNnu5d7zTXXcP/99zNu3DjWrFlzwNZxSUkJ06dP5/zzzycSibQ5z/Dhw/nxj3/MyJEj2bZtG1dffTW9evXiyiuvZMyYMZx++ulMnjx5v+u48MIL+f73v8+ECRO0s7PTU9dKPugwtkVi165ddO/enXg8zjnnnMNll13GOeeck/P1JJNJJk6cyMKFCxk6dOg+tzcPuVy1alXO1w16HXQ665fD3afCkRNhzjOFrqbo6TC2RW7+/PmMHz+eMWPGMGTIED7/+c/nfB2rV6/mM5/5DDNmzGgzxEUOn7pWwtQxd3bKPprHiodp1KhRvPPOOwecp7q6OrTWuHRC6lnJiw7VIi9EN490HHr+RQ5PhwnysrIytm7dqjdzF+XubN26da+hkdKJ6H0dqg7TtTJo0CDWr1+PjozYdZWVlTFo0KBClyE5pb6VfOgwQR6LxTK/MBQRkfbrMF0rItKZqWslTApyEQmPjrWSFwpyEZEipyAXkfBp1EqoFOQiEiJ1reSDglxEQqSWeD7kLMjNLGJmL5tZ9mdgEBGRdstli/yrwOs5XJ6IFD11reRDToLczAYBZwJ352J5IiLSfrlqkf8IuBFI7m8GM5tjZrVmVquf4Yt0NeorD1PWQW5mZwGb3X35geZz9wXuXuPuNf369ct2tSJSDPSDoLzIRYt8GnC2ma0DHgJONbN/z8FyRUSkHbIOcnf/hrsPcvdq4ELgaXe/OOvKRKTzUM9KqDSOXERCpK6VfMjpYWzdfTGwOJfLFBGRA1OLXETyQH0rYVKQi0h4NGolLxTkIhI+Hf0wVApyEQmRWuT5oCAXESlyCnIRyQN1rYRJQS4i4dHOzrxQkIuIFDkFuYiET6NWQqUgF5EQqWslHxTkIiJFTkEuInmgrpUwKchFJDwatZIXCnIRkSKnIBeR8GnUSqgU5CISInWt5EMuTr482MyeMbPVZvaamX01F4WJiEj75OIMQXHg79z9JTOrBJab2ZPuvjoHyxaRTkFdK2HKxcmXP3T3l9KXdwKvA0dlu1wR6QQ0aiUvctpHbmbVwATghTZum2NmtWZWu2XLllyuVkSkS8tZkJtZd+A3wPXuvqP17e6+wN1r3L2mX79+uVqtiBQDjVoJVU6C3MxipEL8QXf/bS6WKSKdgbpW8iEXo1YMuAd43d3/JfuSRETkUOSiRT4NuAQ41cxWpP/OyMFyRaTTUNdKmLIefuju/4O+P4lIWzRqJS/0y04RCY92cuaFglxEpMgpyEUkPEEk9d+Tha2jk1OQi0h4LB0xyXhh6+jkFOQiEp7mnZ0JBXmYFOQiEj61yEOlIBeR8CnIQ6UgF5HwJROFrqBTU5CLSPjUIg+VglxEwqcgD5WCXETCl2wqdAWdmoJcRMJXBD8I+vCtFWzYtrvQZRwWBbmIFMzTazZR11j4HaHbX3uSgf9+Mk/cfmmhSzksXTbImxJJxv7jEzzy8geFLkWkS1qzcQeX3VfLvEdeLXQp1K9+HIC/jT5R4EoOT5cN8p11TVyReIj7F/1XoUsR6ZJ21qd2gL63tfDdGUe8dk+hS8hKlw3ySP3HfDX6W/7Nby10KSJdUmT3FtaVfYnJ9UsKXUrRy9U5O2ea2Rtm9paZ3ZSLZYat+RAQUTQsSiQM7s6d//1W5noiufexybt9vBqA0+v+M691NdvwSR3vf7zvtwEvwmOo5+KcnRHgx8BfA6OAL5rZqGyXG7ag+dRTxfeciXRIm3bU8/Djj5PY/CZseZO1//F1/rj8lcztty18OhWS7pBMZsaWJwvUMXDR9x7kwtt+RTLp1FGWmV7f1PFH2LRm2X76mNmJwHx3Pz19/RsA7v7P+7tPTU2N19bWHvK6Vj/+byT+/Bx1QTcarYwYcYL4bkg0kbQIsVgMs4BkvJHdlJKMdScWMTwRx5MJ8ASxAEojRkX8E4ZtfAyAZUdfQVl8J5FEPQ7pP6PJA+oppylSTkk0IJ50EokkDsQCiARG0gH39OeBZz7NHTBPEkvUEXgcB4IgIBIEJAhIJMHMsCACllp2EgMLiHicyoZN7I72JGExPIhSQiNuEeJEASNGAsdJEEndz53Am0gQ4BhmEUqs+Y1iJLH0yVosU19Lvs+FlMCa75K6X/PFwPY++cv+XkXuTtIhYpY5IWDzyb/MoLmR1vKEYOmHFNyxwHD3zLqs5cyZaUmintrWRBADjEjqUU4tyFIb4ZltNzDDPEngSdwCnAC3PfPsVZWlnqvMfdPFJDCa4kkCM6LRAAMaE04i6cSiAdEgIOlOUyLVGg0s9Rqw9PLMDAOakqmd74EZZbEIzp4wKUkvpynzQDU/Dy3qNCMSGPGk0xBPkkxCj6CBsuQuEk0N7Iz0xkq70du3E3y6hV3JGPGSnpR360Zk98c01e+iV9MmNvY/iR5WR9Oureysb6K++yD6V5ZRtvNdGnZ+xNuxYfTuXcVnGtcQ3bKKsvrNPJc8nkkTajhi9b1sbCynOti0n1cC/DT+OVb2PJX/m/g/WP0nbPTeDLKPANhaPoR37SjeKh/HMX1KqdrxOk2N9WywASRKe1AVbaCkbjM7kqV8Gu1NxBOUej0xmmgKymiKVDBs+5/4uPwYdidL2FafoE/3ciwSoeemZewoP4od3Y8l+cl6qDySQSWfMuLDh9usc9fAv6Bp6zu86sexoc9URvSK02vbKrY1RvkgGEDfiijdE58Q1G1lM1XY1rVMDNby9jHnk4w3sTvohgcxuvtObPfHxB08KCFaUkYsvpPep83lqGET9vs4HYiZLXf3mn2m5yDIzwNmuvsV6euXACe4+7Wt5psDzAE4+uijJ7377ruHvK4//vR/M2zj7+jBp5TRSBNR6igjblECkgSeICBJnCgV1kA5DQAk3UgQkLSAhGfa4nSzPbfvpJw6SlO1pucoIUGF1VPKof2YIelGYE4CS9VHBMcI0mNpA5LpuE39pWIkmQpITxKxPc/JbkqJeZwGSgCnhDiGEyd1wP4ISQKSqQ8eogSWTEW7O01EU+tNRX1qHQfS1ukVPbsvLa0yN6tlNPNW05MENBHFcGLEIf0BlyAVinsiOBXTzY975nlJPz6RvR6fPRU3vx72jvj0NPMWHyh7Cguy2uLsJd3YRTlxIvSyXQQ49R5jKz0ptyYq2UWMBJ94N9wi9GZH5n47qCASGJW+C4Bt3p36oIKBvhmA7V7B23YME3k9s74XkiM4IVizVw3PJMYxPbJyn9o+8Co2BAOZ7Ksy0xYnxzMqsp7+/lFmnkZKGGybiZKgySNsoRfdrIGe7CKJUUcpjcQop56y9Ht0q/cgSUCQbuJESFJpdQAkCDLP8WbvRX/7pM3HbpeX8WxyHNNib9AzmZrnz8kjKAviDGRr5jHaSk+OtI8ppx6ABo/RRIQKGggs9XhvoweBOTFvIkacnZSz6dQfMeHkWYfydGbsL8izPvlye7n7AmABpFrkh7OMk/7XHQTBnZnrEWjxhahF6y9Iv6WSiXRLOJL58ubu1DclWbVhOxfc9SeG9oJFXzudsiBChRkRMyzd6Aoyy0niqXZu6rq1+t9K87oiQPfD2dBUoWBGRfpqrNXNra+3NS1vT24HUBrispu/EViLlnlb88DetyeTvuc1lJppr8uOk0z6nterO/Fk+kMlPc09STzpxIKAzCfGXo2v1LfAhniC0miQfo06WIwyi1ISDSARJ9FUR5OXMrA0RhAYnkyyo66eyvLy1Lp2fEiDlbCTCnp3K0t929y9jY92NdCtZ196l0Zh12Z219XxYVMl4wb0hrVPEF/yr/xpxDcpO2Io8YfGE21MfSCM9YdYfON0uP0IAH5Z8SUu2P0LtvUczbPj7uSME8fBjrXw0xOpj/XiuKsfp3+fCnznRrbujtO98gh6lEdT77imOhIe5YhYLFVroonAInQLAro1PwyJOCQaqCrpRmsbt9fTozxKRSwCddtIxrpTnjD4bt/MPA0eo9RSHwZLjv0qY866np59ykl+9DYbGsro1rMv/bqXQqKRxmRAmQUcF4tAMknyjT9Qv+YJ/IzbKYsGBB4nnojjlDCgJJJ5TTTGk3QLjCODtl9D2cjFe/0DYHCL64PS03IuOMgDYGZEWs4SRPZpzZkZ5SURBvYsI0nATi+jtKSkjWXtteI2G6uh0tnHOwxLf7gfbJ7W9nm9tpwn3a0SadU9HI20ugttf2i3nqes1Us4ADKTIlEikUoqW94nCOjRrWLPhB4DKWXvD8Sgojf9W8xC9/5UdIcRzdeHzyQ6fCYnp6/GSyshHeSv3vrXADR0O5LSTzewtWQg3Lid3sAXm++/M/V4lPUawOA+qRVZ5QD6tiwUoKRirwYbkTYekUg09deGAT1b3LuiDwFQGQPmbYJP3oV+wxl+03+yruxLAPzVGedBVaqeoN9nGNRyYdHSvWsJAoKRZ1Ax8oyWBRONluwTriXR8PYF5GLJLwJDzWyImZUAFwKLcrDcUPXtnnrJzj19eIErEekcNs/6JQD/WPJ3mWl1FUcCLb4lt9R8IK2gQN8dY2XQL/X+v+iEo/eeXmSyfgTdPW5m1wJPkOpNuNfdX8u6spCVxSKs++6ZhS5DpNOo6zmE6vpfMKT7nu6NptLeQKuds80yQR7Z97Y8+6dzxkLyfHj1V9DjqEKXc8hy8lHo7r8Hfp+LZYlIcaqu6sas8Ucy5y+PzUyLl/QCIOqN+96h+WQThWqRt/aFn6X+ilAHeQRFpNhFAuOOC/ceVpeIpXb3lyXr9r1Deaq1zuATwi6t01OQi0hokukdkxFvYwhv1XFw1Z8y/dRy+BTkIhIaj6TGzuz3UBgDxuSxms6ryx40S0TC50E6yNvqI5ecUZCLSGiagzziOjhdmBTkIhIaT/9IJ6ogD5WCXERClDk4RkGr6OwU5CISnuajNRbByZeLmYJcRMJjqYjRkYPCpSAXkfBkglwt8jApyEUkPLbnEL0SHgW5iISo+YxGCvIwKchFJDSW7lpRizxcCnIRCU/mHKPqIw+TglxEwqNRK3mhIBeR0Hg6yA964m/JSlZBbmbfN7M1ZvaKmT1sZr1yVZiIdAKmnZ35kG2L/ElgjLsfD7wJfCP7kkSk80gFuVrk4coqyN39v9wzR8NZCnufcFpEurbmrhUJVy4f5cuAx/d3o5nNMbNaM6vdsmVLDlcrIh2VpyMm0LFWQnXQMwSZ2VPAgDZumufuj6bnmQfEgQf3txx3XwAsAKipqVGHmUiXkO4jN73lw3TQIHf30w50u5ldCpwFzHDXqH8R2cMzRz9UNIQpq3N2mtlM4EbgZHffnZuSRKTz0KiVfMi2j/xfgUrgSTNbYWZ35aAmEeksTD8FyoesWuTu/plcFSIiIodHY4NEJDTNu83UtRIuBbmIhEhdK/mgIBcRKXIKchEJndrl4VKQi0h4NGolLxTkIhIa7eLMDwW5iIROo1bCpSAXkdCYesfzQkEuIlLkFOQikgfqWgmTglxEQqSulXxQkItIaNQOzw8FuYiETqNWwqUgF5Hw6AdBeaEgF5HQKc7DpSAXkdC4IjwvchLkZvZ3ZuZm1jcXyxORTkJd43mRdZCb2WDgr4D3si9HRDonJXqYctEi/yGpEzDrmRKRvbh6VvIiqyA3s1nAB+6+Mkf1iIjIITroyZfN7ClgQBs3zQNuJtWtclBmNgeYA3D00UcfQokiInIgBw1ydz+trelmNhYYAqy01FjRQcBLZjbF3Te2sZwFwAKAmpoadcOIiOTIQYN8f9z9VaB/83UzWwfUuPtHOahLRETaSePIRSR0+ol+uA67Rd6au1fnalki0llo2Eo+qEUuIlLkFOQiIkVOQS4iUuQU5CIiRU5BLiJS5BTkIhI6jV0Jl4JcREKjg2blh4JcRKTIKchFJDz6QWdeKMhFRIqcglxEpMgpyEUkdDpoVrgU5CISIg1byQcFuYhIkVOQi0ho1KGSHwpyEZEipyAXESlyWQe5mV1nZmvM7DUzuy0XRYlI56JRK+HK6lRvZjYdmAWMc/cGM+t/sPuISNdhplEr+ZBti/xq4Lvu3gDg7puzL0lEOgu1w/Mj2yAfBpxkZi+Y2R/NbPL+ZjSzOWZWa2a1W7ZsyXK1IiLS7KBdK2b2FDCgjZvmpe/fB5gKTAZ+ZWbHuvs+H8TuvgBYAFBTU6MPahGRHDlokLv7afu7zcyuBn6bDu5lZpYE+gJqcouI5Em2XSuPANMBzGwYUAJ8lG1RIiLSflmNWgHuBe41s1VAI/A3bXWriEjXprEr4coqyN29Ebg4R7WISCfjOtdbXuiXnSIiRU5BLiJS5BTkIiJFTkEuIlLkFOQiEpqm0t4AbIgNLnAlnVu2ww9FRPZrV9UYvtR4M7Ge05hZ6GI6MbXIRSRUS5JjSFis0GV0agpyEZEipyAXESlyCnIRCZ3ryOShUpCLiBQ5BbmIhM502KxQKchFRIqcglxEpMgpyEVEipyCXERCo9PM5EdWQW5m481sqZmtMLNaM5uSq8JEpPMw7esMVbYt8tuAW919PHBL+rqIiORRtkHuQI/05Z7AhiyXJyIihyjbox9eDzxhZj8g9aHwF/ub0czmAHMAjj766CxXKyIizQ4a5Gb2FDCgjZvmATOAG9z9N2Z2PnAPcFpby3H3BcACgJqaGu0CERHJkYMGubu3GcwAZvYA8NX01YXA3TmqS0Q6AbXY8iPbPvINwMnpy6cCa7NcnoiIHKJs+8ivBO4wsyhQT7oPXERE8ierIHf3/wEm5agWERE5DPplp4hIkVOQi0hookHqJ52lUUVNmLLtIxcR2a8Tj63iK9OP42+nDSl0KZ2aglxEQhMExtdPH1HoMjo9fd8RESlyCnIRkSKnIBcRKXIKchGRIqcgFxEpcgpyEZEipyAXESlyCnIRkSJnXoDTXJvZFuDdw7x7X+CjHJZTDLTNXYO2uWvIZpuPcfd+rScWJMizYWa17l5T6DrySdvcNWibu4YwtlldKyIiRU5BLiJS5IoxyBcUuoAC0DZ3DdrmriHn21x0feQiIrK3YmyRi4hICwpyEZEi12GD3MxmmtkbZvaWmd3Uxu2lZvbL9O0vmFl1/qvMrXZs89fMbLWZvWJm/21mxxSizlw62Da3mO8LZuZmVtRD1dqzvWZ2fvp5fs3MfpHvGnOtHa/ro83sGTN7Of3aPqMQdeaSmd1rZpvNbNV+bjczuzP9mLxiZhOzWqG7d7g/IAK8DRwLlAArgVGt5rkGuCt9+ULgl4WuOw/bPB2oSF++uitsc3ZgL08AAALNSURBVHq+SuBZYClQU+i6Q36OhwIvA73T1/sXuu48bPMC4Or05VHAukLXnYPt/ktgIrBqP7efATwOGDAVeCGb9XXUFvkU4C13f8fdG4GHgFmt5pkF3J++/GtghplZHmvMtYNus7s/4+6701eXAoPyXGOuted5Bvg28D2gPp/FhaA923sl8GN33wbg7pvzXGOutWebHeiRvtwT2JDH+kLh7s8CHx9gllnAA56yFOhlZgMPd30dNciPAt5vcX19elqb87h7HNgOVOWlunC0Z5tbupzUJ3oxO+g2p79yDnb3/8xnYSFpz3M8DBhmZn8ys6VmNjNv1YWjPds8H7jYzNYDvweuy09pBXWo7/cD0smXi5CZXQzUACcXupYwmVkA/AtwaYFLyacoqe6VU0h943rWzMa6+ycFrSpcXwTuc/fbzexE4OdmNsbdk4UurFh01Bb5B8DgFtcHpae1OY+ZRUl9Jdual+rC0Z5txsxOA+YBZ7t7Q55qC8vBtrkSGAMsNrN1pPoSFxXxDs/2PMfrgUXu3uTufwbeJBXsxao923w58CsAd38eKCN1YKnOrF3v9/bqqEH+IjDUzIaYWQmpnZmLWs2zCPib9OXzgKc9vRehSB10m81sAvBvpEK82PtO4SDb7O7b3b2vu1e7ezWp/QJnu3ttYcrNWnte14+Qao1jZn1JdbW8k88ic6w92/weMAPAzEaSCvItea0y/xYBX06PXpkKbHf3Dw97aYXeu3uAvb5nkGqNvA3MS0/7Fqk3MqSe7IXAW8Ay4NhC15yHbX4K2ASsSP8tKnTNYW9zq3kXU8SjVtr5HBup7qTVwKvAhYWuOQ/bPAr4E6kRLSuAvyp0zTnY5v8APgSaSH3Luhy4CriqxfP84/Rj8mq2r2v9RF9EpMh11K4VERFpJwW5iEiRU5CLiBQ5BbmISJFTkIuIFDkFuYhIkVOQi4gUuf8PR6fY6YNKiw4AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(x, np.fft.fft(data).real, label='FFT real part')\n", + "plt.plot(x, np.fft.fft(data).imag, label='FFT imaginary part')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And... the phase isn't right, and there is a huge peak (solvent? digital artefact? I don't know)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}