Skip to content

Instantly share code, notes, and snippets.

@PatWalters
Created July 7, 2022 00:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PatWalters/7439099598b4f08a331a81b209f88baa to your computer and use it in GitHub Desktop.
Save PatWalters/7439099598b4f08a331a81b209f88baa to your computer and use it in GitHub Desktop.
A simple example of a 3 component library enumeration
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "fc8203b7",
"metadata": {},
"source": [
"Enumerate a quinazoline library based on a 3 component library"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "99fdff9e",
"metadata": {},
"outputs": [],
"source": [
"from rdkit import Chem\n",
"from rdkit.Chem import AllChem\n",
"import mols2grid\n",
"from rdkit.Chem.Draw import MolsToGridImage\n",
"from itertools import product\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"id": "b6173c2c",
"metadata": {},
"source": [
"Define the first reagent set - aldehydes"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "e973926a",
"metadata": {},
"outputs": [],
"source": [
"aldehyde_list = \"\"\"c1ccccc1[CH]=O\n",
"CCC[CH]=O\n",
"C1CCCCC1[CH]=O\n",
"C1CC1[CH]=O\n",
"c1c[nH]cc1[CH]=O\"\"\".split(\"\\n\")\n",
"aldehyde_mol_list = [Chem.MolFromSmiles(x) for x in aldehyde_list]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "3c70e676",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"MolsToGridImage(aldehyde_mol_list,molsPerRow=5)"
]
},
{
"cell_type": "markdown",
"id": "fcad8c64",
"metadata": {},
"source": [
"Define the second reagent set - primary amines"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "89e55315",
"metadata": {},
"outputs": [],
"source": [
"amine_list = \"\"\"c1ccccc1N\n",
"CCCN\n",
"C1CCCCC1N\n",
"C1CC1N\n",
"c1c[nH]cc1N\"\"\".split(\"\\n\")\n",
"amine_mol_list = [Chem.MolFromSmiles(x) for x in amine_list]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "485952e7",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"MolsToGridImage(amine_mol_list,molsPerRow=5)"
]
},
{
"cell_type": "markdown",
"id": "be259408",
"metadata": {},
"source": [
"Define the third reagent set - aminobenzoic acids"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "853ffc4f",
"metadata": {},
"outputs": [],
"source": [
"amino_benzoic_list = \"\"\"Nc1ccccc1C(O)=O\n",
"Nc1ccc(F)cc1C(O)=O\n",
"Nc1cccc(F)c1C(O)=O\n",
"Nc1cc(F)ccc1C(O)=O\n",
"Nc1cc(F)c(F)cc1C(O)=O\"\"\".split(\"\\n\")\n",
"amino_benzoic_mol_list = [Chem.MolFromSmiles(x) for x in amino_benzoic_list]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "14e12c6f",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"MolsToGridImage(amino_benzoic_mol_list,molsPerRow=5)"
]
},
{
"cell_type": "markdown",
"id": "9709a41e",
"metadata": {},
"source": [
"Define the reaction"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "68509e2e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<rdkit.Chem.rdChemReactions.ChemicalReaction at 0x135757d60>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rxn = AllChem.ReactionFromSmarts(\"[#6:10]-[#7H2:9].[#7]-[c:4]1[c:5][c:6][c:7][c:8][c:3]1-[#6](-[OH])=O.[#6H:1](-[#6:2])=O>>[#6:10]-[#7:9]-c1n[c:1](-[#6:2])n[c:4]2[c:5][c:6][c:7][c:8][c:3]12\")\n",
"rxn"
]
},
{
"cell_type": "markdown",
"id": "a773a776",
"metadata": {},
"source": [
"Enumerate products, using intertools.product allows us to avoid embedded loops. "
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "30122abf",
"metadata": {},
"outputs": [],
"source": [
"product_list = []\n",
"for r1,r2,r3 in product(*[amine_mol_list,amino_benzoic_mol_list,aldehyde_mol_list]):\n",
" for prod in rxn.RunReactants([r1,r2,r3]):\n",
" prod_mol = prod[0]\n",
" Chem.SanitizeMol(prod_mol)\n",
" product_list.append(Chem.MolToSmiles(prod_mol))"
]
},
{
"cell_type": "markdown",
"id": "be9a2a19",
"metadata": {},
"source": [
"View the products"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "e182c836",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<script>\n",
" function fit_height(obj) {\n",
" obj.style.height = 0;\n",
" var height = obj.contentDocument.body.scrollHeight + 18 + 'px';\n",
" obj.style.height = height;\n",
" }\n",
"</script>\n",
"<iframe class=\"mols2grid-iframe\" frameborder=\"0\" width=\"100%\"\n",
"\n",
"height=\"200\"\n",
"\n",
"\n",
"allow=\"clipboard-write\"\n",
"\n",
"srcdoc=\"&lt;html&gt;\n",
" &lt;meta charset=&quot;utf-8&quot;&gt;\n",
" &lt;head&gt;\n",
" &lt;style&gt;\n",
" #mols2grid.gridcontainer {\n",
" display: block;\n",
" padding-left: 1em;\n",
" max-width: 820px;\n",
" width: 820px;\n",
"}\n",
"#mols2grid .cell {\n",
" border: 1px solid #cccccc;\n",
" text-align: center;\n",
" vertical-align: top;\n",
" max-width: 160px;\n",
" width: 160px;\n",
" font-family: &#x27;DejaVu&#x27;, sans-serif;\n",
" font-size: 12pt;\n",
" padding: 0;\n",
" margin: 0px;\n",
" float: left;\n",
"}\n",
"#mols2grid .cell:hover {\n",
" background-color: #e7e7e7 !important;\n",
"}\n",
"#mols2grid .cell .data-img {\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"#mols2grid .cell img, #mols2grid .cell svg {\n",
" max-width: 100%;\n",
" height: auto;\n",
" padding: 0;\n",
"}\n",
"#mols2grid .data {\n",
" overflow: hidden;\n",
" white-space: nowrap;\n",
" text-overflow: ellipsis;\n",
" display: block;\n",
"}\n",
"#mols2grid .arrow-asc:after {\n",
" content: &#x27;↑&#x27;;\n",
" text-align: right;\n",
" float:right;\n",
"}\n",
"#mols2grid .arrow-desc:after {\n",
" content: &#x27;↓&#x27;;\n",
" text-align: right;\n",
" float:right;\n",
"}\n",
" /* custom CSS */\n",
" \n",
" &lt;/style&gt;\n",
" &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/list.js/2.3.1/list.min.js&quot;&gt;&lt;/script&gt;\n",
"&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css&quot; integrity=&quot;sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l&quot; crossorigin=&quot;anonymous&quot;&gt;\n",
"&lt;script src=&quot;https://code.jquery.com/jquery-3.6.0.min.js&quot; integrity=&quot;sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=&quot; crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;\n",
"&lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js&quot; integrity=&quot;sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns&quot; crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;\n",
"&lt;script src=&quot;https://unpkg.com/@rdkit/rdkit@2022.3.1/Code/MinimalLib/dist/RDKit_minimal.js&quot;&gt;&lt;/script&gt;\n",
" &lt;!-- custom header --&gt;\n",
" \n",
" &lt;/head&gt;\n",
" &lt;body&gt;\n",
" &lt;div id=&quot;mols2grid&quot; class=&quot;gridcontainer grid-default&quot;&gt;\n",
" &lt;div class=&quot;row mb-3&quot;&gt;\n",
" &lt;div class=&quot;list&quot;&gt;&lt;div class=&quot;cell&quot; data-mols2grid-id=&quot;0&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;position-relative float-left cached_checkbox&quot;&gt;&lt;div class=&quot;data data-mols2grid-id-copy&quot;&gt;&lt;/div&gt;&lt;a tabindex=&quot;0&quot; class=&quot;data data-img mols2grid-tooltip&quot; data-toggle=&quot;popover&quot; data-content=&quot;.&quot;&gt;&lt;/a&gt;&lt;div class=&quot;data data-SMILES&quot; style=&quot;display: none;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;\n",
" &lt;/div&gt;\n",
" &lt;div class=&quot;d-inline&quot;&gt;\n",
" &lt;ul class=&quot;pagination float-left&quot;&gt;&lt;/ul&gt;\n",
" &lt;div id=&quot;controls&quot; class=&quot;d-flex flex-row float-right&quot;&gt;\n",
" \n",
" &lt;div id=&quot;chkbox-dropdown&quot; class=&quot;dropdown&quot;&gt;\n",
" &lt;button class=&quot;btn btn-light dropdown-toggle&quot; type=&quot;button&quot; id=&quot;chkboxDropdown&quot; data-toggle=&quot;dropdown&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot;&gt;☑&lt;/button&gt;\n",
" &lt;div class=&quot;dropdown-menu&quot; aria-labelledby=&quot;checkboxDropdownMenu&quot;&gt;\n",
" &lt;button id=&quot;btn-chkbox-all&quot; class=&quot;dropdown-item&quot; type=&quot;button&quot;&gt;Check all&lt;/button&gt;\n",
" &lt;button id=&quot;btn-chkbox-match&quot; class=&quot;dropdown-item&quot; type=&quot;button&quot;&gt;Check matching&lt;/button&gt;\n",
" &lt;button id=&quot;btn-chkbox-none&quot; class=&quot;dropdown-item&quot; type=&quot;button&quot;&gt;Uncheck all&lt;/button&gt;\n",
" &lt;button id=&quot;btn-chkbox-invert&quot; class=&quot;dropdown-item&quot; type=&quot;button&quot;&gt;Invert&lt;/button&gt;\n",
" &lt;div class=&quot;dropdown-divider&quot;&gt;&lt;/div&gt;\n",
" &lt;button id=&quot;btn-chkbox-copy&quot; class=&quot;dropdown-item&quot; type=&quot;button&quot;&gt;Copy to clipboard&lt;/button&gt;\n",
" &lt;button id=&quot;btn-chkbox-dlsmi&quot; class=&quot;dropdown-item&quot; type=&quot;button&quot;&gt;Save SMILES&lt;/button&gt;\n",
" &lt;button id=&quot;btn-chkbox-dlcsv&quot; class=&quot;dropdown-item&quot; type=&quot;button&quot;&gt;Save CSV&lt;/button&gt;\n",
" &lt;/div&gt;\n",
"&lt;/div&gt;\n",
" \n",
" &lt;div id=&quot;sort-dropdown&quot; class=&quot;dropdown pl-2&quot;&gt;\n",
" &lt;button class=&quot;btn btn-light dropdown-toggle&quot; type=&quot;button&quot; id=&quot;sortDropdown&quot; data-toggle=&quot;dropdown&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot;&gt;\n",
" Sort by\n",
" &lt;/button&gt;\n",
" &lt;div class=&quot;dropdown-menu&quot; aria-labelledby=&quot;sortDropdownMenu&quot;&gt;\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" &lt;button class=&quot;dropdown-item sort-btn arrow-asc active&quot; type=&quot;button&quot; data-name=&quot;mols2grid-id&quot;&gt;Index&lt;/button&gt;\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" &lt;button class=&quot;dropdown-item sort-btn arrow-asc active&quot; type=&quot;button&quot; data-name=&quot;data-mols2grid-id&quot;&gt;mols2grid-id&lt;/button&gt;\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" &lt;button class=&quot;dropdown-item sort-btn &quot; type=&quot;button&quot; data-name=&quot;data-SMILES&quot;&gt;SMILES&lt;/button&gt;\n",
" \n",
" \n",
" \n",
" &lt;button class=&quot;dropdown-item sort-btn&quot; type=&quot;button&quot; data-name=&quot;checkbox&quot;&gt;Selected&lt;/button&gt;\n",
" \n",
" &lt;/div&gt;\n",
" &lt;/div&gt;\n",
" &lt;div class=&quot;input-group row pl-4&quot;&gt;\n",
" &lt;input type=&quot;text&quot; id=&quot;searchbar&quot; class=&quot;form-control&quot; placeholder=&quot;Search&quot; aria-label=&quot;Search&quot; aria-describedby=&quot;basic-addon1&quot;&gt;\n",
" &lt;div class=&quot;input-group-append&quot;&gt;\n",
" &lt;button id=&quot;searchBtn&quot; class=&quot;btn btn-light dropdown-toggle&quot; type=&quot;button&quot; data-toggle=&quot;dropdown&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot;&gt;🔎&lt;/button&gt;\n",
" &lt;div class=&quot;dropdown-menu dropdown-menu-right&quot;&gt;\n",
" &lt;button id=&quot;txtSearch&quot; class=&quot;search-btn dropdown-item active&quot;&gt;Text&lt;/button&gt;\n",
" &lt;button id=&quot;smartsSearch&quot; class=&quot;search-btn dropdown-item&quot;&gt;SMARTS&lt;/button&gt;\n",
" &lt;/div&gt;\n",
" &lt;/div&gt;\n",
" &lt;/div&gt;\n",
" &lt;/div&gt;\n",
" &lt;/div&gt;\n",
" &lt;/div&gt;\n",
" &lt;script&gt;\n",
" // list.js\n",
"var listObj = new List(&#x27;mols2grid&#x27;, {\n",
" valueNames: [{data: [&#x27;mols2grid-id&#x27;]}, &#x27;data-mols2grid-id&#x27;, &#x27;data-SMILES&#x27;, &#x27;data-img&#x27;, &#x27;data-mols2grid-id-copy&#x27;, {attr: &#x27;data-content&#x27;, name: &#x27;mols2grid-tooltip&#x27;}],\n",
" item: &#x27;&lt;div class=&quot;cell&quot; data-mols2grid-id=&quot;0&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;position-relative float-left cached_checkbox&quot;&gt;&lt;div class=&quot;data data-mols2grid-id-copy&quot;&gt;&lt;/div&gt;&lt;a tabindex=&quot;0&quot; class=&quot;data data-img mols2grid-tooltip&quot; data-toggle=&quot;popover&quot; data-content=&quot;.&quot;&gt;&lt;/a&gt;&lt;div class=&quot;data data-SMILES&quot; style=&quot;display: none;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&#x27;,\n",
" page: 15,\n",
" pagination: {\n",
" name: &quot;pagination&quot;,\n",
" item: &#x27;&lt;li class=&quot;page-item&quot;&gt;&lt;a class=&quot;page page-link&quot; href=&quot;#&quot; onclick=&quot;event.preventDefault()&quot;&gt;&lt;/a&gt;&lt;/li&gt;&#x27;,\n",
" innerWindow: 1,\n",
" outerWindow: 1,\n",
" },\n",
"});\n",
"listObj.remove(&quot;mols2grid-id&quot;, &quot;0&quot;);\n",
"listObj.add([{&quot;mols2grid-id&quot;: 0, &quot;data-SMILES&quot;: &quot;c1ccc(Nc2nc(-c3ccccc3)nc3ccccc23)cc1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 0, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc(Nc2nc(-c3ccccc3)nc3ccccc23)cc1&quot;}, {&quot;mols2grid-id&quot;: 1, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2ccccc2)c2ccccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 1, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2ccccc2)c2ccccc2n1&quot;}, {&quot;mols2grid-id&quot;: 2, &quot;data-SMILES&quot;: &quot;c1ccc(Nc2nc(C3CCCCC3)nc3ccccc23)cc1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 2, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc(Nc2nc(C3CCCCC3)nc3ccccc23)cc1&quot;}, {&quot;mols2grid-id&quot;: 3, &quot;data-SMILES&quot;: &quot;c1ccc(Nc2nc(C3CC3)nc3ccccc23)cc1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 3, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc(Nc2nc(C3CC3)nc3ccccc23)cc1&quot;}, {&quot;mols2grid-id&quot;: 4, &quot;data-SMILES&quot;: &quot;c1ccc(Nc2nc(-c3cc[nH]c3)nc3ccccc23)cc1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 4, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc(Nc2nc(-c3cc[nH]c3)nc3ccccc23)cc1&quot;}, {&quot;mols2grid-id&quot;: 5, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(-c3ccccc3)nc(Nc3ccccc3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 5, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(-c3ccccc3)nc(Nc3ccccc3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 6, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2ccccc2)c2cc(F)ccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 6, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2ccccc2)c2cc(F)ccc2n1&quot;}, {&quot;mols2grid-id&quot;: 7, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(C3CCCCC3)nc(Nc3ccccc3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 7, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(C3CCCCC3)nc(Nc3ccccc3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 8, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(C3CC3)nc(Nc3ccccc3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 8, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(C3CC3)nc(Nc3ccccc3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 9, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(-c3cc[nH]c3)nc(Nc3ccccc3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 9, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(-c3cc[nH]c3)nc(Nc3ccccc3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 10, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(-c3ccccc3)nc(Nc3ccccc3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 10, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(-c3ccccc3)nc(Nc3ccccc3)c12&quot;}, {&quot;mols2grid-id&quot;: 11, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2ccccc2)c2c(F)cccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 11, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2ccccc2)c2c(F)cccc2n1&quot;}, {&quot;mols2grid-id&quot;: 12, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(C3CCCCC3)nc(Nc3ccccc3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 12, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(C3CCCCC3)nc(Nc3ccccc3)c12&quot;}, {&quot;mols2grid-id&quot;: 13, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(C3CC3)nc(Nc3ccccc3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 13, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(C3CC3)nc(Nc3ccccc3)c12&quot;}, {&quot;mols2grid-id&quot;: 14, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(-c3cc[nH]c3)nc(Nc3ccccc3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 14, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(-c3cc[nH]c3)nc(Nc3ccccc3)c12&quot;}, {&quot;mols2grid-id&quot;: 15, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(Nc3ccccc3)nc(-c3ccccc3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 15, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(Nc3ccccc3)nc(-c3ccccc3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 16, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2ccccc2)c2ccc(F)cc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 16, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2ccccc2)c2ccc(F)cc2n1&quot;}, {&quot;mols2grid-id&quot;: 17, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(Nc3ccccc3)nc(C3CCCCC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 17, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(Nc3ccccc3)nc(C3CCCCC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 18, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(Nc3ccccc3)nc(C3CC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 18, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(Nc3ccccc3)nc(C3CC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 19, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(Nc3ccccc3)nc(-c3cc[nH]c3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 19, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(Nc3ccccc3)nc(-c3cc[nH]c3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 20, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(-c3ccccc3)nc(Nc3ccccc3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 20, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(-c3ccccc3)nc(Nc3ccccc3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 21, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2ccccc2)c2cc(F)c(F)cc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 21, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2ccccc2)c2cc(F)c(F)cc2n1&quot;}, {&quot;mols2grid-id&quot;: 22, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(C3CCCCC3)nc(Nc3ccccc3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 22, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(C3CCCCC3)nc(Nc3ccccc3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 23, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(C3CC3)nc(Nc3ccccc3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 23, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(C3CC3)nc(Nc3ccccc3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 24, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(-c3cc[nH]c3)nc(Nc3ccccc3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 24, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(-c3cc[nH]c3)nc(Nc3ccccc3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 25, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2ccccc2)nc2ccccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 25, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2ccccc2)nc2ccccc12&quot;}, {&quot;mols2grid-id&quot;: 26, &quot;data-SMILES&quot;: &quot;CCCNc1nc(CCC)nc2ccccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 26, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(CCC)nc2ccccc12&quot;}, {&quot;mols2grid-id&quot;: 27, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CCCCC2)nc2ccccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 27, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CCCCC2)nc2ccccc12&quot;}, {&quot;mols2grid-id&quot;: 28, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CC2)nc2ccccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 28, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CC2)nc2ccccc12&quot;}, {&quot;mols2grid-id&quot;: 29, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2cc[nH]c2)nc2ccccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 29, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2cc[nH]c2)nc2ccccc12&quot;}, {&quot;mols2grid-id&quot;: 30, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2ccccc2)nc2ccc(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 30, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2ccccc2)nc2ccc(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 31, &quot;data-SMILES&quot;: &quot;CCCNc1nc(CCC)nc2ccc(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 31, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(CCC)nc2ccc(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 32, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CCCCC2)nc2ccc(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 32, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CCCCC2)nc2ccc(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 33, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CC2)nc2ccc(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 33, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CC2)nc2ccc(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 34, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2cc[nH]c2)nc2ccc(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 34, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2cc[nH]c2)nc2ccc(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 35, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2ccccc2)nc2cccc(F)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 35, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2ccccc2)nc2cccc(F)c12&quot;}, {&quot;mols2grid-id&quot;: 36, &quot;data-SMILES&quot;: &quot;CCCNc1nc(CCC)nc2cccc(F)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 36, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(CCC)nc2cccc(F)c12&quot;}, {&quot;mols2grid-id&quot;: 37, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CCCCC2)nc2cccc(F)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 37, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CCCCC2)nc2cccc(F)c12&quot;}, {&quot;mols2grid-id&quot;: 38, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CC2)nc2cccc(F)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 38, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CC2)nc2cccc(F)c12&quot;}, {&quot;mols2grid-id&quot;: 39, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2cc[nH]c2)nc2cccc(F)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 39, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2cc[nH]c2)nc2cccc(F)c12&quot;}, {&quot;mols2grid-id&quot;: 40, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2ccccc2)nc2cc(F)ccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 40, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2ccccc2)nc2cc(F)ccc12&quot;}, {&quot;mols2grid-id&quot;: 41, &quot;data-SMILES&quot;: &quot;CCCNc1nc(CCC)nc2cc(F)ccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 41, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(CCC)nc2cc(F)ccc12&quot;}, {&quot;mols2grid-id&quot;: 42, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CCCCC2)nc2cc(F)ccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 42, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CCCCC2)nc2cc(F)ccc12&quot;}, {&quot;mols2grid-id&quot;: 43, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CC2)nc2cc(F)ccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 43, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CC2)nc2cc(F)ccc12&quot;}, {&quot;mols2grid-id&quot;: 44, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2cc[nH]c2)nc2cc(F)ccc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 44, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2cc[nH]c2)nc2cc(F)ccc12&quot;}, {&quot;mols2grid-id&quot;: 45, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2ccccc2)nc2cc(F)c(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 45, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2ccccc2)nc2cc(F)c(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 46, &quot;data-SMILES&quot;: &quot;CCCNc1nc(CCC)nc2cc(F)c(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 46, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(CCC)nc2cc(F)c(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 47, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CCCCC2)nc2cc(F)c(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 47, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CCCCC2)nc2cc(F)c(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 48, &quot;data-SMILES&quot;: &quot;CCCNc1nc(C2CC2)nc2cc(F)c(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 48, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(C2CC2)nc2cc(F)c(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 49, &quot;data-SMILES&quot;: &quot;CCCNc1nc(-c2cc[nH]c2)nc2cc(F)c(F)cc12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 49, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCNc1nc(-c2cc[nH]c2)nc2cc(F)c(F)cc12&quot;}, {&quot;mols2grid-id&quot;: 50, &quot;data-SMILES&quot;: &quot;c1ccc(-c2nc(NC3CCCCC3)c3ccccc3n2)cc1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 50, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc(-c2nc(NC3CCCCC3)c3ccccc3n2)cc1&quot;}, {&quot;mols2grid-id&quot;: 51, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CCCCC2)c2ccccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 51, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CCCCC2)c2ccccc2n1&quot;}, {&quot;mols2grid-id&quot;: 52, &quot;data-SMILES&quot;: &quot;c1ccc2c(NC3CCCCC3)nc(C3CCCCC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 52, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc2c(NC3CCCCC3)nc(C3CCCCC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 53, &quot;data-SMILES&quot;: &quot;c1ccc2c(NC3CCCCC3)nc(C3CC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 53, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc2c(NC3CCCCC3)nc(C3CC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 54, &quot;data-SMILES&quot;: &quot;c1ccc2c(NC3CCCCC3)nc(-c3cc[nH]c3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 54, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc2c(NC3CCCCC3)nc(-c3cc[nH]c3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 55, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(-c3ccccc3)nc(NC3CCCCC3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 55, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(-c3ccccc3)nc(NC3CCCCC3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 56, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CCCCC2)c2cc(F)ccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 56, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CCCCC2)c2cc(F)ccc2n1&quot;}, {&quot;mols2grid-id&quot;: 57, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(C3CCCCC3)nc(NC3CCCCC3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 57, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(C3CCCCC3)nc(NC3CCCCC3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 58, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(C3CC3)nc(NC3CCCCC3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 58, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(C3CC3)nc(NC3CCCCC3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 59, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(-c3cc[nH]c3)nc(NC3CCCCC3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 59, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(-c3cc[nH]c3)nc(NC3CCCCC3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 60, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(-c3ccccc3)nc(NC3CCCCC3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 60, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(-c3ccccc3)nc(NC3CCCCC3)c12&quot;}, {&quot;mols2grid-id&quot;: 61, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CCCCC2)c2c(F)cccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 61, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CCCCC2)c2c(F)cccc2n1&quot;}, {&quot;mols2grid-id&quot;: 62, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(C3CCCCC3)nc(NC3CCCCC3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 62, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(C3CCCCC3)nc(NC3CCCCC3)c12&quot;}, {&quot;mols2grid-id&quot;: 63, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(C3CC3)nc(NC3CCCCC3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 63, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(C3CC3)nc(NC3CCCCC3)c12&quot;}, {&quot;mols2grid-id&quot;: 64, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(-c3cc[nH]c3)nc(NC3CCCCC3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 64, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(-c3cc[nH]c3)nc(NC3CCCCC3)c12&quot;}, {&quot;mols2grid-id&quot;: 65, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(NC3CCCCC3)nc(-c3ccccc3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 65, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(NC3CCCCC3)nc(-c3ccccc3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 66, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CCCCC2)c2ccc(F)cc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 66, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CCCCC2)c2ccc(F)cc2n1&quot;}, {&quot;mols2grid-id&quot;: 67, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(NC3CCCCC3)nc(C3CCCCC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 67, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(NC3CCCCC3)nc(C3CCCCC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 68, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(NC3CCCCC3)nc(C3CC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 68, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(NC3CCCCC3)nc(C3CC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 69, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(NC3CCCCC3)nc(-c3cc[nH]c3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 69, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(NC3CCCCC3)nc(-c3cc[nH]c3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 70, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(-c3ccccc3)nc(NC3CCCCC3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 70, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(-c3ccccc3)nc(NC3CCCCC3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 71, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CCCCC2)c2cc(F)c(F)cc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 71, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CCCCC2)c2cc(F)c(F)cc2n1&quot;}, {&quot;mols2grid-id&quot;: 72, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(C3CCCCC3)nc(NC3CCCCC3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 72, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(C3CCCCC3)nc(NC3CCCCC3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 73, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(C3CC3)nc(NC3CCCCC3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 73, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(C3CC3)nc(NC3CCCCC3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 74, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(-c3cc[nH]c3)nc(NC3CCCCC3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 74, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(-c3cc[nH]c3)nc(NC3CCCCC3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 75, &quot;data-SMILES&quot;: &quot;c1ccc(-c2nc(NC3CC3)c3ccccc3n2)cc1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 75, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc(-c2nc(NC3CC3)c3ccccc3n2)cc1&quot;}, {&quot;mols2grid-id&quot;: 76, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CC2)c2ccccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 76, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CC2)c2ccccc2n1&quot;}, {&quot;mols2grid-id&quot;: 77, &quot;data-SMILES&quot;: &quot;c1ccc2c(NC3CC3)nc(C3CCCCC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 77, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc2c(NC3CC3)nc(C3CCCCC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 78, &quot;data-SMILES&quot;: &quot;c1ccc2c(NC3CC3)nc(C3CC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 78, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc2c(NC3CC3)nc(C3CC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 79, &quot;data-SMILES&quot;: &quot;c1ccc2c(NC3CC3)nc(-c3cc[nH]c3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 79, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc2c(NC3CC3)nc(-c3cc[nH]c3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 80, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(-c3ccccc3)nc(NC3CC3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 80, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(-c3ccccc3)nc(NC3CC3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 81, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CC2)c2cc(F)ccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 81, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CC2)c2cc(F)ccc2n1&quot;}, {&quot;mols2grid-id&quot;: 82, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(C3CCCCC3)nc(NC3CC3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 82, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(C3CCCCC3)nc(NC3CC3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 83, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(C3CC3)nc(NC3CC3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 83, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(C3CC3)nc(NC3CC3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 84, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(-c3cc[nH]c3)nc(NC3CC3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 84, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(-c3cc[nH]c3)nc(NC3CC3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 85, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(-c3ccccc3)nc(NC3CC3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 85, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(-c3ccccc3)nc(NC3CC3)c12&quot;}, {&quot;mols2grid-id&quot;: 86, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CC2)c2c(F)cccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 86, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CC2)c2c(F)cccc2n1&quot;}, {&quot;mols2grid-id&quot;: 87, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(C3CCCCC3)nc(NC3CC3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 87, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(C3CCCCC3)nc(NC3CC3)c12&quot;}, {&quot;mols2grid-id&quot;: 88, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(C3CC3)nc(NC3CC3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 88, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(C3CC3)nc(NC3CC3)c12&quot;}, {&quot;mols2grid-id&quot;: 89, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(-c3cc[nH]c3)nc(NC3CC3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 89, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(-c3cc[nH]c3)nc(NC3CC3)c12&quot;}, {&quot;mols2grid-id&quot;: 90, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(NC3CC3)nc(-c3ccccc3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 90, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(NC3CC3)nc(-c3ccccc3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 91, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CC2)c2ccc(F)cc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 91, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CC2)c2ccc(F)cc2n1&quot;}, {&quot;mols2grid-id&quot;: 92, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(NC3CC3)nc(C3CCCCC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 92, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(NC3CC3)nc(C3CCCCC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 93, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(NC3CC3)nc(C3CC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 93, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(NC3CC3)nc(C3CC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 94, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(NC3CC3)nc(-c3cc[nH]c3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 94, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(NC3CC3)nc(-c3cc[nH]c3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 95, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(-c3ccccc3)nc(NC3CC3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 95, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(-c3ccccc3)nc(NC3CC3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 96, &quot;data-SMILES&quot;: &quot;CCCc1nc(NC2CC2)c2cc(F)c(F)cc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 96, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(NC2CC2)c2cc(F)c(F)cc2n1&quot;}, {&quot;mols2grid-id&quot;: 97, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(C3CCCCC3)nc(NC3CC3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 97, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(C3CCCCC3)nc(NC3CC3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 98, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(C3CC3)nc(NC3CC3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 98, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(C3CC3)nc(NC3CC3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 99, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(-c3cc[nH]c3)nc(NC3CC3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 99, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(-c3cc[nH]c3)nc(NC3CC3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 100, &quot;data-SMILES&quot;: &quot;c1ccc(-c2nc(Nc3cc[nH]c3)c3ccccc3n2)cc1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 100, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc(-c2nc(Nc3cc[nH]c3)c3ccccc3n2)cc1&quot;}, {&quot;mols2grid-id&quot;: 101, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2cc[nH]c2)c2ccccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 101, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2cc[nH]c2)c2ccccc2n1&quot;}, {&quot;mols2grid-id&quot;: 102, &quot;data-SMILES&quot;: &quot;c1ccc2c(Nc3cc[nH]c3)nc(C3CCCCC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 102, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc2c(Nc3cc[nH]c3)nc(C3CCCCC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 103, &quot;data-SMILES&quot;: &quot;c1ccc2c(Nc3cc[nH]c3)nc(C3CC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 103, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc2c(Nc3cc[nH]c3)nc(C3CC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 104, &quot;data-SMILES&quot;: &quot;c1ccc2c(Nc3cc[nH]c3)nc(-c3cc[nH]c3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 104, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: c1ccc2c(Nc3cc[nH]c3)nc(-c3cc[nH]c3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 105, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(-c3ccccc3)nc(Nc3cc[nH]c3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 105, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(-c3ccccc3)nc(Nc3cc[nH]c3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 106, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2cc[nH]c2)c2cc(F)ccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 106, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2cc[nH]c2)c2cc(F)ccc2n1&quot;}, {&quot;mols2grid-id&quot;: 107, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(C3CCCCC3)nc(Nc3cc[nH]c3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 107, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(C3CCCCC3)nc(Nc3cc[nH]c3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 108, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(C3CC3)nc(Nc3cc[nH]c3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 108, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(C3CC3)nc(Nc3cc[nH]c3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 109, &quot;data-SMILES&quot;: &quot;Fc1ccc2nc(-c3cc[nH]c3)nc(Nc3cc[nH]c3)c2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 109, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2nc(-c3cc[nH]c3)nc(Nc3cc[nH]c3)c2c1&quot;}, {&quot;mols2grid-id&quot;: 110, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(-c3ccccc3)nc(Nc3cc[nH]c3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 110, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(-c3ccccc3)nc(Nc3cc[nH]c3)c12&quot;}, {&quot;mols2grid-id&quot;: 111, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2cc[nH]c2)c2c(F)cccc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 111, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2cc[nH]c2)c2c(F)cccc2n1&quot;}, {&quot;mols2grid-id&quot;: 112, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(C3CCCCC3)nc(Nc3cc[nH]c3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 112, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(C3CCCCC3)nc(Nc3cc[nH]c3)c12&quot;}, {&quot;mols2grid-id&quot;: 113, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(C3CC3)nc(Nc3cc[nH]c3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 113, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(C3CC3)nc(Nc3cc[nH]c3)c12&quot;}, {&quot;mols2grid-id&quot;: 114, &quot;data-SMILES&quot;: &quot;Fc1cccc2nc(-c3cc[nH]c3)nc(Nc3cc[nH]c3)c12&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 114, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cccc2nc(-c3cc[nH]c3)nc(Nc3cc[nH]c3)c12&quot;}, {&quot;mols2grid-id&quot;: 115, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(Nc3cc[nH]c3)nc(-c3ccccc3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 115, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(Nc3cc[nH]c3)nc(-c3ccccc3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 116, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2cc[nH]c2)c2ccc(F)cc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 116, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2cc[nH]c2)c2ccc(F)cc2n1&quot;}, {&quot;mols2grid-id&quot;: 117, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(Nc3cc[nH]c3)nc(C3CCCCC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 117, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(Nc3cc[nH]c3)nc(C3CCCCC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 118, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(Nc3cc[nH]c3)nc(C3CC3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 118, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(Nc3cc[nH]c3)nc(C3CC3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 119, &quot;data-SMILES&quot;: &quot;Fc1ccc2c(Nc3cc[nH]c3)nc(-c3cc[nH]c3)nc2c1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 119, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1ccc2c(Nc3cc[nH]c3)nc(-c3cc[nH]c3)nc2c1&quot;}, {&quot;mols2grid-id&quot;: 120, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(-c3ccccc3)nc(Nc3cc[nH]c3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 120, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(-c3ccccc3)nc(Nc3cc[nH]c3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 121, &quot;data-SMILES&quot;: &quot;CCCc1nc(Nc2cc[nH]c2)c2cc(F)c(F)cc2n1&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 121, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: CCCc1nc(Nc2cc[nH]c2)c2cc(F)c(F)cc2n1&quot;}, {&quot;mols2grid-id&quot;: 122, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(C3CCCCC3)nc(Nc3cc[nH]c3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 122, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(C3CCCCC3)nc(Nc3cc[nH]c3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 123, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(C3CC3)nc(Nc3cc[nH]c3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 123, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(C3CC3)nc(Nc3cc[nH]c3)c2cc1F&quot;}, {&quot;mols2grid-id&quot;: 124, &quot;data-SMILES&quot;: &quot;Fc1cc2nc(-c3cc[nH]c3)nc(Nc3cc[nH]c3)c2cc1F&quot;, &quot;data-img&quot;: null, &quot;data-mols2grid-id-copy&quot;: 124, &quot;mols2grid-tooltip&quot;: &quot;&lt;strong&gt;SMILES&lt;/strong&gt;: Fc1cc2nc(-c3cc[nH]c3)nc(Nc3cc[nH]c3)c2cc1F&quot;}]);\n",
"// filter\n",
"if (window.parent.mols2grid_lists === undefined) {\n",
" window.parent.mols2grid_lists = {};\n",
"}\n",
"window.parent.mols2grid_lists[&quot;default&quot;] = listObj;\n",
"\n",
"\n",
"// selection\n",
"class MolStorage extends Map {\n",
" multi_set(_id, _smiles) {\n",
" for (let i=0; i &lt; _id.length; i++) {\n",
" this.set(_id[i], _smiles[i]);\n",
" }\n",
" }\n",
" multi_del(_id) {\n",
" for (let i=0; i &lt; _id.length; i++) {\n",
" this.delete(_id[i]);\n",
" };\n",
" }\n",
" to_dict() {\n",
" var content = &quot;{&quot;;\n",
" for (let [key, value] of this) {\n",
" content += key + &quot;:&quot; + JSON.stringify(value) + &quot;,&quot;;\n",
" }\n",
" content = content.length &gt; 1 ? content.slice(0, -1) : content;\n",
" content += &quot;}&quot;;\n",
" return content\n",
" }\n",
" download_smi(fileName) {\n",
" var content = &quot;SMILES index\\n&quot;;\n",
" for (let [key, value] of this) {\n",
" content += value + &quot; &quot; + key + &quot;\\n&quot;;\n",
" }\n",
" var a = document.createElement(&quot;a&quot;);\n",
" var file = new Blob([content], {type: &quot;text/plain&quot;});\n",
" a.href = URL.createObjectURL(file);\n",
" a.download = fileName;\n",
" a.click();\n",
" a.remove();\n",
" }\n",
"}\n",
"var SELECTION = new MolStorage();\n",
"\n",
"\n",
"\n",
"// kernel\n",
"var kernel_env = null;\n",
"if (window.parent.IPython !== undefined) {\n",
" // Jupyter notebook\n",
" kernel_env = &quot;jupyter&quot;;\n",
" var kernel = window.parent.IPython.notebook.kernel;\n",
" kernel.execute(&#x27;from mols2grid.select import register as _m2g_reg&#x27;)\n",
" function add_selection(grid_id, _id, smiles) {\n",
" SELECTION.multi_set(_id, smiles);\n",
" kernel.execute(&quot;_m2g_reg.add_selection(&#x27;&quot;+grid_id+&quot;&#x27;, &quot;+JSON.stringify(_id)+&quot;,&quot;+JSON.stringify(smiles)+&quot;)&quot;);\n",
" }\n",
" function del_selection(grid_id, _id) {\n",
" SELECTION.multi_del(_id);\n",
" kernel.execute(&quot;_m2g_reg.del_selection(&#x27;&quot;+grid_id+&quot;&#x27;, &quot;+JSON.stringify(_id)+&quot;)&quot;);\n",
" }\n",
"} else if (window.parent.google !== undefined) {\n",
" // Google colab\n",
" kernel_env = &quot;colab&quot;;\n",
" var kernel = window.parent.google.colab.kernel;\n",
" function add_selection(grid_id, _id, smiles) {\n",
" SELECTION.multi_set(_id, smiles);\n",
" (async function() {\n",
" const result = await kernel.invokeFunction(&#x27;_m2g_reg.add_selection&#x27;,\n",
" [grid_id, _id, smiles], {});\n",
" })();\n",
" }\n",
" function del_selection(grid_id, _id) {\n",
" SELECTION.multi_del(_id);\n",
" (async function() {\n",
" const result = await kernel.invokeFunction(&#x27;_m2g_reg.del_selection&#x27;,\n",
" [grid_id, _id], {});\n",
" })();\n",
" }\n",
"} else {\n",
" function add_selection(grid_id, _id, smiles) {\n",
" SELECTION.multi_set(_id, smiles);\n",
" }\n",
" function del_selection(grid_id, _id) {\n",
" SELECTION.multi_del(_id);\n",
" }\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"// sort\n",
"var sort_field = &quot;mols2grid-id&quot;;\n",
"var sort_order = &quot;asc&quot;;\n",
"function mols2gridSortFunction(itemA, itemB, options) {\n",
" var x = itemA.values()[options.valueName];\n",
" var y = itemB.values()[options.valueName];\n",
" if (typeof x === &quot;number&quot;) {\n",
" if (isFinite(x - y)) {\n",
" return x - y; \n",
" } else {\n",
" return isFinite(x) ? -1 : 1;\n",
" }\n",
" } else {\n",
" x = x.toLowerCase();\n",
" y = y.toLowerCase();\n",
" return (x &lt; y) ? -1: (x &gt; y) ? 1: 0;\n",
" }\n",
"}\n",
"function checkboxSort(itemA, itemB, options) {\n",
" if (itemA.elm !== undefined) {\n",
" var checkedA = itemA.elm.firstChild.checked;\n",
" if (itemB.elm !== undefined) {\n",
" var checkedB = itemB.elm.firstChild.checked;\n",
" if (checkedA &amp;&amp; !checkedB) {\n",
" return -1;\n",
" } else if (!checkedA &amp;&amp; checkedB) {\n",
" return 1;\n",
" } else {\n",
" return 0;\n",
" }\n",
" } else {\n",
" return -1;\n",
" }\n",
" } else if (itemB.elm !== undefined) {\n",
" return 1;\n",
" } else {\n",
" return 0;\n",
" }\n",
"}\n",
"$(&#x27;#mols2grid button.sort-btn&#x27;).click(function(e) {\n",
" var _field = $(this).attr(&quot;data-name&quot;);\n",
" if (_field == sort_field) {\n",
" $(this).removeClass(&quot;arrow-&quot; + sort_order)\n",
" sort_order = (sort_order === &quot;desc&quot;) ? &quot;asc&quot; : &quot;desc&quot;;\n",
" } else {\n",
" $(&#x27;#mols2grid button.sort-btn.active&#x27;).removeClass(&quot;active arrow-&quot; + sort_order);\n",
" sort_order = &quot;asc&quot;;\n",
" sort_field = _field;\n",
" $(this).addClass(&quot;active&quot;);\n",
" }\n",
" $(this).addClass(&quot;arrow-&quot; + sort_order)\n",
" if (sort_field == &quot;checkbox&quot;) {\n",
" listObj.sort(&quot;mols2grid-id&quot;, {order: sort_order, sortFunction: checkboxSort});\n",
" } else {\n",
" listObj.sort(_field, {order: sort_order, sortFunction: mols2gridSortFunction});\n",
" }\n",
"});\n",
"\n",
"\n",
"\n",
"\n",
"// tooltips\n",
"$.fn.tooltip.Constructor.Default.whiteList.span = [&#x27;style&#x27;]\n",
"listObj.on(&quot;updated&quot;, function (list) {\n",
" $(function () {\n",
" // hide previous popovers\n",
" $(&#x27;#mols2grid a.page-link&#x27;).click(function(e) {\n",
" $(&#x27;.mols2grid-tooltip[data-toggle=&quot;popover&quot;]&#x27;).popover(&#x27;hide&#x27;)\n",
" });\n",
" // create new popover\n",
" $(&#x27;.mols2grid-tooltip[data-toggle=&quot;popover&quot;]&#x27;).popover({\n",
" placement: &#x27;bottom&#x27;,\n",
" trigger: &#x27;click hover&#x27;,\n",
" html: true,\n",
" sanitize: false,\n",
" });\n",
" })\n",
"});\n",
"\n",
"\n",
"\n",
"// selection modifyers and export options\n",
"// check all\n",
"$(&#x27;#btn-chkbox-all&#x27;).click(function (e) {\n",
" var _id = [];\n",
" var _smiles = [];\n",
" listObj.items.forEach(function (item) {\n",
" if (item.elm) {\n",
" item.elm.getElementsByTagName(&quot;input&quot;)[0].checked = true;\n",
" } else {\n",
" item.show()\n",
" item.elm.getElementsByTagName(&quot;input&quot;)[0].checked = true;\n",
" item.hide()\n",
" }\n",
" _id.push(item.values()[&quot;mols2grid-id&quot;]);\n",
" _smiles.push(item.values()[&quot;data-SMILES&quot;]);\n",
" });\n",
" add_selection(&quot;default&quot;, _id, _smiles);\n",
"});\n",
"// check matching\n",
"$(&#x27;#btn-chkbox-match&#x27;).click(function (e) {\n",
" var _id = [];\n",
" var _smiles = [];\n",
" listObj.matchingItems.forEach(function (item) {\n",
" if (item.elm) {\n",
" item.elm.getElementsByTagName(&quot;input&quot;)[0].checked = true;\n",
" } else {\n",
" item.show()\n",
" item.elm.getElementsByTagName(&quot;input&quot;)[0].checked = true;\n",
" item.hide()\n",
" }\n",
" _id.push(item.values()[&quot;mols2grid-id&quot;]);\n",
" _smiles.push(item.values()[&quot;data-SMILES&quot;]);\n",
" });\n",
" add_selection(&quot;default&quot;, _id, _smiles);\n",
"});\n",
"// uncheck all\n",
"$(&#x27;#btn-chkbox-none&#x27;).click(function (e) {\n",
" var _id = [];\n",
" listObj.items.forEach(function (item) {\n",
" if (item.elm) {\n",
" item.elm.getElementsByTagName(&quot;input&quot;)[0].checked = false;\n",
" } else {\n",
" item.show()\n",
" item.elm.getElementsByTagName(&quot;input&quot;)[0].checked = false;\n",
" item.hide()\n",
" }\n",
" _id.push(item.values()[&quot;mols2grid-id&quot;]);\n",
" });\n",
" del_selection(&quot;default&quot;, _id);\n",
"});\n",
"// invert\n",
"$(&#x27;#btn-chkbox-invert&#x27;).click(function (e) {\n",
" var _id_add = [];\n",
" var _id_del = [];\n",
" var _smiles = [];\n",
" listObj.items.forEach(function (item) {\n",
" if (item.elm) {\n",
" var chkbox = item.elm.getElementsByTagName(&quot;input&quot;)[0]\n",
" chkbox.checked = !chkbox.checked;\n",
" } else {\n",
" item.show()\n",
" var chkbox = item.elm.getElementsByTagName(&quot;input&quot;)[0]\n",
" chkbox.checked = !chkbox.checked;\n",
" item.hide()\n",
" }\n",
" if (chkbox.checked) {\n",
" _id_add.push(item.values()[&quot;mols2grid-id&quot;]);\n",
" _smiles.push(item.values()[&quot;data-SMILES&quot;]);\n",
" } else {\n",
" _id_del.push(item.values()[&quot;mols2grid-id&quot;]);\n",
" }\n",
" });\n",
" del_selection(&quot;default&quot;, _id_del);\n",
" add_selection(&quot;default&quot;, _id_add, _smiles);\n",
"});\n",
"// copy to clipboard\n",
"$(&quot;#btn-chkbox-copy&quot;).click(function(e) {\n",
" navigator.clipboard.writeText(SELECTION.to_dict());\n",
"});\n",
"// export smiles\n",
"$(&quot;#btn-chkbox-dlsmi&quot;).click(function(e) {\n",
" SELECTION.download_smi(&quot;selection.smi&quot;);\n",
"});\n",
"// export CSV\n",
"$(&quot;#btn-chkbox-dlcsv&quot;).click(function(e) {\n",
" var sep = &quot;\\t&quot;\n",
" // same order as subset + tooltip\n",
" var columns = Array.from(listObj.items[0].elm.querySelectorAll(&quot;div.data&quot;))\n",
" .map(elm =&gt; elm.classList[1]);\n",
" // remove &#x27;data-&#x27;\n",
" var header = columns.map(name =&gt; name.slice(5));\n",
" // csv content\n",
" header = [&quot;index&quot;].concat(header).join(sep);\n",
" var content = header + &quot;\\n&quot;;\n",
" for (let [index, smiles] of SELECTION.entries()) {\n",
" var data = listObj.items[index].values();\n",
" content += index;\n",
" columns.forEach((key) =&gt; {\n",
" content += sep + data[key];\n",
" })\n",
" content += &quot;\\n&quot;;\n",
" }\n",
" var a = document.createElement(&quot;a&quot;);\n",
" var file = new Blob([content], {type: &quot;text/csv&quot;});\n",
" a.href = URL.createObjectURL(file);\n",
" a.download = &quot;selection.csv&quot;;\n",
" a.click();\n",
" a.remove();\n",
"});\n",
"// update selection on checkbox click\n",
"listObj.on(&quot;updated&quot;, function (list) {\n",
" $(&quot;input:checkbox&quot;).change(function() {\n",
" var _id = parseInt($(this).closest(&quot;.cell&quot;).attr(&quot;data-mols2grid-id&quot;));\n",
" if (this.checked) {\n",
" var _smiles = $($(this).siblings(&quot;.data-SMILES&quot;)[0]).text();\n",
" add_selection(&quot;default&quot;, [_id], [_smiles]);\n",
" } else {\n",
" del_selection(&quot;default&quot;, [_id]);\n",
" }\n",
" }); \n",
"});\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"// generate images for the currently displayed molecules\n",
"var draw_opts = {&quot;width&quot;: 160, &quot;height&quot;: 120};\n",
"var json_draw_opts = JSON.stringify(draw_opts);\n",
"\n",
"var smarts_matches = {};\n",
"\n",
"// Load RDKit\n",
"window\n",
".initRDKitModule()\n",
".then(function(RDKit) {\n",
" console.log(&#x27;RDKit version: &#x27;, RDKit.version());\n",
" window.RDKit = RDKit;\n",
" window.RDKitModule = RDKit;\n",
"\n",
" // search bar\n",
" function SmartsSearch(query, columns) {\n",
" var smiles_col = columns[0];\n",
" smarts_matches = {};\n",
" var query = $(&#x27;#mols2grid #searchbar&#x27;).val();\n",
" var qmol = RDKit.get_qmol(query);\n",
" if (qmol.is_valid()) {\n",
" listObj.items.forEach(function (item) {\n",
" var smiles = item.values()[smiles_col]\n",
" var mol = RDKit.get_mol(smiles, &#x27;{&quot;removeHs&quot;: false }&#x27;);\n",
" if (mol.is_valid()) {\n",
" var results = mol.get_substruct_matches(qmol);\n",
" if (results === &quot;\\{\\}&quot;) {\n",
" item.found = false;\n",
" } else {\n",
" item.found = true;\n",
" \n",
" results = JSON.parse(results);\n",
" \n",
" var highlights = {&quot;atoms&quot;: [], &quot;bonds&quot;: []};\n",
" results.forEach(function (match) {\n",
" highlights[&quot;atoms&quot;].push(...match.atoms)\n",
" highlights[&quot;bonds&quot;].push(...match.bonds)\n",
" });\n",
" \n",
" var index = item.values()[&quot;mols2grid-id&quot;];\n",
" smarts_matches[index] = highlights;\n",
" \n",
" }\n",
" } else {\n",
" item.found = false;\n",
" }\n",
" mol.delete();\n",
" });\n",
" }\n",
" qmol.delete();\n",
"}\n",
"var search_type = &quot;Text&quot;;\n",
"$(&#x27;#mols2grid .search-btn&#x27;).click(function() {\n",
" search_type = $(this).text();\n",
" $(&#x27;#mols2grid button.search-btn.active&#x27;).removeClass(&quot;active&quot;);\n",
" $(this).addClass(&quot;active&quot;);\n",
"});\n",
"$(&#x27;#mols2grid #searchbar&#x27;).on(&quot;keyup&quot;, function(e) {\n",
" var query = e.target.value;\n",
" if (search_type === &quot;Text&quot;) {\n",
" smarts_matches = {};\n",
" listObj.search(query, [&#x27;data-mols2grid-id&#x27;, &#x27;data-SMILES&#x27;]);\n",
" } else {\n",
" listObj.search(query, [&quot;data-SMILES&quot;], SmartsSearch);\n",
" }\n",
"});\n",
"\n",
" \n",
" // generate images for the currently displayed molecules\n",
"RDKit.prefer_coordgen(true);\n",
"function draw_mol(smiles, index, template_mol) {\n",
" var mol = RDKit.get_mol(smiles, &#x27;{&quot;removeHs&quot;: false }&#x27;);\n",
" var svg = &quot;&quot;;\n",
" if (mol.is_valid()) {\n",
" var highlights = smarts_matches[index];\n",
" if (highlights) {\n",
" var details = Object.assign({}, draw_opts, highlights);\n",
" details = JSON.stringify(details);\n",
" mol.generate_aligned_coords(template_mol, true);\n",
" } else {\n",
" var details = json_draw_opts;\n",
" }\n",
" svg = mol.get_svg_with_highlights(details);\n",
" }\n",
" mol.delete();\n",
" if (svg == &quot;&quot;) {\n",
" return &#x27;&lt;svg width=&quot;160&quot; height=&quot;120&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 160 120&quot;&gt;&lt;/svg&gt;&#x27;;\n",
" }\n",
" return svg;\n",
"}\n",
"listObj.on(&quot;updated&quot;, function (list) {\n",
" var query = $(&#x27;#mols2grid #searchbar&#x27;).val();\n",
" var template_mol;\n",
" if (query === &quot;&quot;) {\n",
" smarts_matches = {};\n",
" template_mol = null;\n",
" } else {\n",
" template_mol = RDKit.get_qmol(query);\n",
" template_mol.set_new_coords(true);\n",
" }\n",
" $(&#x27;#mols2grid .cell&#x27;).each(function() {\n",
" var $t = $(this);\n",
" var smiles = $t.children(&quot;.data-SMILES&quot;).first().text();\n",
" var index = parseInt(this.getAttribute(&quot;data-mols2grid-id&quot;));\n",
" var svg = draw_mol(smiles, index, template_mol);\n",
" $t.children(&quot;.data-img&quot;).html(svg);\n",
" });\n",
" if (template_mol) {\n",
" template_mol.delete();\n",
" }\n",
"});\n",
" \n",
"\n",
" // trigger update to activate tooltips, draw images, setup callbacks...\n",
" listObj.update();\n",
" // resize iframe to fit content\n",
" if (window.frameElement) {\n",
" window.parent.fit_height(window.frameElement);\n",
" }\n",
"});\n",
" &lt;/script&gt;\n",
" &lt;/body&gt;\n",
"&lt;/html&gt;\">\n",
"</iframe>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mols2grid.display(pd.DataFrame({\"SMILES\" : product_list}))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3f6e42ff",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment