{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "7260ca30-7450-4c41-b7f3-0b20be6b9a8b",
   "metadata": {},
   "source": [
    "# Using the Histogram widget\n",
    "\n",
    "For this example we need to install pandas. If you don't have it yet, just execute the cell bellow to install."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b7e3be6a-0e74-4521-8619-b3c4be96c676",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-05T13:40:29.826759Z",
     "iopub.status.busy": "2022-04-05T13:40:29.825761Z",
     "iopub.status.idle": "2022-04-05T13:40:35.519293Z",
     "shell.execute_reply": "2022-04-05T13:40:35.518293Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: pandas in c:\\users\\gilberto\\anaconda3\\envs\\trident-chemwidgets\\lib\\site-packages (1.4.1)\n",
      "Requirement already satisfied: python-dateutil>=2.8.1 in c:\\users\\gilberto\\anaconda3\\envs\\trident-chemwidgets\\lib\\site-packages (from pandas) (2.8.2)\n",
      "Requirement already satisfied: numpy>=1.18.5 in c:\\users\\gilberto\\anaconda3\\envs\\trident-chemwidgets\\lib\\site-packages (from pandas) (1.22.3)\n",
      "Requirement already satisfied: pytz>=2020.1 in c:\\users\\gilberto\\anaconda3\\envs\\trident-chemwidgets\\lib\\site-packages (from pandas) (2021.3)\n",
      "Requirement already satisfied: six>=1.5 in c:\\users\\gilberto\\anaconda3\\envs\\trident-chemwidgets\\lib\\site-packages (from python-dateutil>=2.8.1->pandas) (1.16.0)\n"
     ]
    }
   ],
   "source": [
    "!pip install pandas"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "426e1291-d1b9-4b5b-8b83-57b100009b7a",
   "metadata": {},
   "source": [
    "Now we can import the `trident_chemwidgets` and the `pandas` lib to import our csv dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "515686f3-e649-40f5-bc6d-59a022213e73",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-05T13:40:35.523293Z",
     "iopub.status.busy": "2022-04-05T13:40:35.523293Z",
     "iopub.status.idle": "2022-04-05T13:40:38.516270Z",
     "shell.execute_reply": "2022-04-05T13:40:38.513261Z"
    }
   },
   "outputs": [],
   "source": [
    "import trident_chemwidgets as tcw\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "d6e0b578-778a-4f64-bb0a-49f83ed9ee61",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-05T13:40:38.529297Z",
     "iopub.status.busy": "2022-04-05T13:40:38.527253Z",
     "iopub.status.idle": "2022-04-05T13:40:38.932943Z",
     "shell.execute_reply": "2022-04-05T13:40:38.931924Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>zinc_id</th>\n",
       "      <th>smiles</th>\n",
       "      <th>mwt</th>\n",
       "      <th>logp</th>\n",
       "      <th>heavy_atoms</th>\n",
       "      <th>n_rings</th>\n",
       "      <th>heteroatoms</th>\n",
       "      <th>tpsa</th>\n",
       "      <th>hacceptors</th>\n",
       "      <th>hdonors</th>\n",
       "      <th>rotatable_bonds</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ZINC000000000007</td>\n",
       "      <td>C=CCc1ccc(OCC(=O)N(CC)CC)c(OC)c1</td>\n",
       "      <td>277.364</td>\n",
       "      <td>2.6709</td>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>38.77</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ZINC000000000010</td>\n",
       "      <td>C[C@@]1(c2ccccc2)OC(C(=O)O)=CC1=O</td>\n",
       "      <td>218.208</td>\n",
       "      <td>1.4696</td>\n",
       "      <td>16</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>63.60</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ZINC000000000011</td>\n",
       "      <td>COc1cc(Cc2cnc(N)nc2N)cc(OC)c1N(C)C</td>\n",
       "      <td>303.366</td>\n",
       "      <td>1.3150</td>\n",
       "      <td>22</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>99.52</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ZINC000000000012</td>\n",
       "      <td>O=C(C[S@@](=O)C(c1ccccc1)c1ccccc1)NO</td>\n",
       "      <td>289.356</td>\n",
       "      <td>2.0301</td>\n",
       "      <td>20</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>66.40</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ZINC000000000014</td>\n",
       "      <td>CC[C@H]1[C@H](O)N2[C@H]3C[C@@]45c6ccccc6N(C)[C...</td>\n",
       "      <td>326.440</td>\n",
       "      <td>1.5545</td>\n",
       "      <td>24</td>\n",
       "      <td>12</td>\n",
       "      <td>4</td>\n",
       "      <td>46.94</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            zinc_id                                             smiles  \\\n",
       "0  ZINC000000000007                   C=CCc1ccc(OCC(=O)N(CC)CC)c(OC)c1   \n",
       "1  ZINC000000000010                  C[C@@]1(c2ccccc2)OC(C(=O)O)=CC1=O   \n",
       "2  ZINC000000000011                 COc1cc(Cc2cnc(N)nc2N)cc(OC)c1N(C)C   \n",
       "3  ZINC000000000012               O=C(C[S@@](=O)C(c1ccccc1)c1ccccc1)NO   \n",
       "4  ZINC000000000014  CC[C@H]1[C@H](O)N2[C@H]3C[C@@]45c6ccccc6N(C)[C...   \n",
       "\n",
       "       mwt    logp  heavy_atoms  n_rings  heteroatoms   tpsa  hacceptors  \\\n",
       "0  277.364  2.6709           20        1            4  38.77           3   \n",
       "1  218.208  1.4696           16        2            4  63.60           3   \n",
       "2  303.366  1.3150           22        2            7  99.52           7   \n",
       "3  289.356  2.0301           20        2            5  66.40           3   \n",
       "4  326.440  1.5545           24       12            4  46.94           4   \n",
       "\n",
       "   hdonors  rotatable_bonds  \n",
       "0        0                8  \n",
       "1        1                2  \n",
       "2        2                5  \n",
       "3        2                5  \n",
       "4        2                1  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# First we import our dataset with pandas\n",
    "dataset = pd.read_csv('https://raw.githubusercontent.com/tridentbio/trident-chemwidgets/master/examples/zinc_subset.csv')\n",
    "dataset.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1bac1c45-4bee-4ecd-a126-b474406429ed",
   "metadata": {},
   "source": [
    "Once we have our data, we can use the Histogram widget to display an interactive Histogram that we can use to explore and split or subset our data set. The Histogram widget accepts the following keyword arugements:\n",
    "\n",
    "- `data`: the dataset in pandas data frame format\n",
    "- `smiles`: the name of the column containing the molecular structure in SMILES format\n",
    "- `x`: the name of the column to plot along the x-axis\n",
    "- `x_label`: (optional) the x-axis label to display, defaults to the string specified by `x` if a label is not provided  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a2dc2e09-9b63-4366-9032-5c34c2da7ec4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-05T13:40:38.936961Z",
     "iopub.status.busy": "2022-04-05T13:40:38.936961Z",
     "iopub.status.idle": "2022-04-05T13:40:38.964035Z",
     "shell.execute_reply": "2022-04-05T13:40:38.963032Z"
    }
   },
   "outputs": [],
   "source": [
    "# Now we can plot\n",
    "histogram = tcw.Histogram(data=dataset, smiles='smiles', x='tpsa', x_label='TPSA')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c65a479",
   "metadata": {},
   "source": [
    "<div align='center'>\n",
    "<img src='https://raw.githubusercontent.com/tridentbio/trident-chemwidgets/master/examples/gifs/histogram_demo_small.gif'/>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5fa1f1aa-f370-4b5a-8b9f-12caf56662dc",
   "metadata": {},
   "source": [
    "In the example above, you can click and drag anywhere in the plot body along the x-axis to select a subset of the data. Your selected datapoints will be highlighted on the plot in a turquoise color. If you click the `SHOW STRUCTURES` button after you have selected the data points, a gallery of the molecular structures will be displayed to the right of the plot. If you then click `SAVE SELECTION`, the selected datapoints will be saved to an internal variable called `selection` that can be accessed as below. You do not need to click `SHOW STRUCTURES` before clicking `SAVE SELECTION`, though the gallery of selected structures will be displayed once `SAVE SELECTION` is clicked."
   ]
  }
 ],
 "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.8.12"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "e9deb209d6c54e3b8e38e3afb34b0fb2": {
      "model_module": "trident-chemwidgets",
      "model_module_version": "^0.1.0",
      "model_name": "HistogramModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "trident-chemwidgets",
       "_model_module_version": "^0.1.0",
       "_model_name": "HistogramModel",
       "_view_count": null,
       "_view_module": "trident-chemwidgets",
       "_view_module_version": "^0.1.0",
       "_view_name": "HistogramView",
       "data": {
        "points": [
         {
          "index": 0,
          "smiles": "C=CCc1ccc(OCC(=O)N(CC)CC)c(OC)c1",
          "x": 38.77
         },
         {
          "index": 1,
          "smiles": "C[C@@]1(c2ccccc2)OC(C(=O)O)=CC1=O",
          "x": 63.6
         },
         {
          "index": 2,
          "smiles": "COc1cc(Cc2cnc(N)nc2N)cc(OC)c1N(C)C",
          "x": 99.52
         },
         {
          "index": 3,
          "smiles": "O=C(C[S@@](=O)C(c1ccccc1)c1ccccc1)NO",
          "x": 66.4
         },
         {
          "index": 4,
          "smiles": "CC[C@H]1[C@H](O)N2[C@H]3C[C@@]45c6ccccc6N(C)[C@H]4[C@@H]2C[C@@H]1[C@@H]3[C@H]5O",
          "x": 46.94
         },
         {
          "index": 5,
          "smiles": "C[C@@H](C(=O)O)N(CCCl)CCCl",
          "x": 40.54
         },
         {
          "index": 6,
          "smiles": "CC1(C)O[C@H]2C[C@@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@]4(F)[C@H](O)C[C@]3(C)[C@@]2(C(=O)CO)O1",
          "x": 93.06
         },
         {
          "index": 7,
          "smiles": "CCC[S@](=O)c1ccc2[nH]/c(=N\\C(=O)OC)[nH]c2c1",
          "x": 87.31
         },
         {
          "index": 8,
          "smiles": "C=CCN1C(=O)[C@@H](CC(C)C)NC1=S",
          "x": 32.34
         },
         {
          "index": 9,
          "smiles": "C=CC[C@H]1CN(C)CC[C@@]1(OC(=O)CC)c1ccccc1",
          "x": 29.54
         },
         {
          "index": 10,
          "smiles": "C=C(C)CNc1ccc([C@H](C)C(=O)O)cc1",
          "x": 49.33
         },
         {
          "index": 11,
          "smiles": "C=CCc1ccccc1OC[C@H](O)CNC(C)C",
          "x": 41.49
         },
         {
          "index": 12,
          "smiles": "O[C@@H]1C=C2CCN3Cc4cc5c(cc4[C@H]([C@H]1O)[C@H]23)OCO5",
          "x": 62.16000000000001
         },
         {
          "index": 13,
          "smiles": "CC1(C)O[C@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@]4(F)[C@H](O)C[C@@]3(C)[C@]2(C(=O)CO)O1",
          "x": 93.06
         },
         {
          "index": 14,
          "smiles": "CC1(C)O[C@H]2C[C@@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@]4(F)[C@H](O)C[C@@]3(C)[C@]2(C(=O)CO)O1",
          "x": 93.06
         },
         {
          "index": 15,
          "smiles": "N[C@@H](CCc1ccc(N(CCCl)CCCl)cc1)C(=O)O",
          "x": 66.56
         },
         {
          "index": 16,
          "smiles": "Nc1ccc2c(c1)C(=O)N[C@H](CCCl)O2",
          "x": 64.35000000000001
         },
         {
          "index": 17,
          "smiles": "C[C@@H](CC(C(N)=O)(c1ccccc1)c1ccccc1)N(C)C",
          "x": 46.330000000000005
         },
         {
          "index": 18,
          "smiles": "Cc1c(NC(=O)[C@H](C)N(C)C)c(=O)n(-c2ccccc2)n1C",
          "x": 59.27
         },
         {
          "index": 19,
          "smiles": "CC[C@@H](C)NC[C@@H](O)c1ccc(N)cc1",
          "x": 58.28
         },
         {
          "index": 20,
          "smiles": "CC(C)CCO[C@H](CN1CCCC1)c1ccccc1",
          "x": 12.47
         },
         {
          "index": 21,
          "smiles": "O=C(O)[C@@H](O)c1ccccc1",
          "x": 57.53
         },
         {
          "index": 22,
          "smiles": "CC[C@](C)(CN(C)C)OC(=O)c1ccccc1",
          "x": 29.54
         },
         {
          "index": 23,
          "smiles": "CC(C)(C)NC[C@@H](O)COc1ccccc1NC(=O)c1ccco1",
          "x": 83.73
         },
         {
          "index": 24,
          "smiles": "C[C@]12Cc3conc3C[C@H]1CC[C@@H]1[C@@H]2CC[C@]2(C)[C@@H]1CC[C@]2(C)O",
          "x": 46.260000000000005
         },
         {
          "index": 25,
          "smiles": "COc1ccc2c(c1)C[C@@H](C)N(CCc1ccc(N)cc1)CC2",
          "x": 38.49
         },
         {
          "index": 26,
          "smiles": "COc1ccc(C(=O)c2ccc3n2CC[C@@H]3C(=O)O)cc1",
          "x": 68.53
         },
         {
          "index": 27,
          "smiles": "C1=CN2C[C@@H](c3ccccc3)N=C2S1",
          "x": 15.6
         },
         {
          "index": 28,
          "smiles": "Cc1ccc(SC[C@H](S)CS)cc1",
          "x": 0.0
         },
         {
          "index": 29,
          "smiles": "C=CCc1cc(OC)c2c(c1OC)OCO2",
          "x": 36.92
         },
         {
          "index": 30,
          "smiles": "CN1CCN2c3ccccc3Cn3cccc3[C@@H]2C1",
          "x": 11.41
         },
         {
          "index": 31,
          "smiles": "Cc1ccccc1NC(=O)[C@H](C)N1CCCC1",
          "x": 32.34
         },
         {
          "index": 32,
          "smiles": "COc1cccc2c1cc([N+](=O)[O-])c1c(C(=O)O)cc3c(c12)OCO3",
          "x": 108.13
         },
         {
          "index": 33,
          "smiles": "CC(=O)Oc1ccccc1C(=O)O",
          "x": 63.60000000000001
         },
         {
          "index": 34,
          "smiles": "C[C@H](C(=O)O)c1ccc(-c2ccsc2)cc1",
          "x": 37.3
         },
         {
          "index": 35,
          "smiles": "CN1[C@H]2CC[C@@H]1CC(OC(=O)[C@@](C)(CO)c1ccccc1)C2",
          "x": 49.77
         },
         {
          "index": 36,
          "smiles": "CN1[C@H]2CC[C@@H]1CC(OC(=O)[C@H](CO)c1ccccc1)C2",
          "x": 49.77
         },
         {
          "index": 37,
          "smiles": "C[N+]1([O-])[C@H]2CC[C@@H]1CC(OC(=O)[C@H](CO)c1ccccc1)C2",
          "x": 69.59
         },
         {
          "index": 38,
          "smiles": "NC[C@H](CC(=O)O)c1ccc(Cl)cc1",
          "x": 63.32000000000001
         },
         {
          "index": 39,
          "smiles": "CC(=O)c1cc2cccc(OC[C@H](O)CNC(C)C)c2o1",
          "x": 71.7
         },
         {
          "index": 40,
          "smiles": "Cc1cccc2c1Oc1ccccc1[C@@]1(O)CCN(C)C[C@H]21",
          "x": 32.7
         },
         {
          "index": 41,
          "smiles": "O=C(O)c1ccc(N[C@H]2OC[C@@H](O)[C@H](O)[C@H]2O)cc1",
          "x": 119.25
         },
         {
          "index": 42,
          "smiles": "C[C@H](NNC(=O)c1ccccc1)c1ccccc1",
          "x": 41.13
         },
         {
          "index": 43,
          "smiles": "C[C@H](C(=O)O)c1ccc2oc(-c3ccc(Cl)cc3)nc2c1",
          "x": 63.33
         },
         {
          "index": 44,
          "smiles": "CCc1oc2ccccc2c1C(=O)c1ccc(O)cc1",
          "x": 50.44
         },
         {
          "index": 45,
          "smiles": "CC(=O)O[C@H](c1ccc(Cl)c(Cl)c1)C(Cl)(Cl)Cl",
          "x": 26.3
         },
         {
          "index": 46,
          "smiles": "OC[C@@H](O)COc1nn(Cc2ccccc2)c2ccccc12",
          "x": 67.50999999999999
         },
         {
          "index": 47,
          "smiles": "O=C(O[C@@H]1CN2CCC1CC2)c1ccccc1",
          "x": 29.54
         },
         {
          "index": 48,
          "smiles": "O=C(c1ccccc1)[C@@H](O)c1ccccc1",
          "x": 37.3
         },
         {
          "index": 49,
          "smiles": "C[N+]1(C)CC[C@H](OC(=O)C(O)(c2ccccc2)c2ccccc2)C1",
          "x": 46.53
         },
         {
          "index": 50,
          "smiles": "O=C(OCc1ccccc1)[C@@H](O)c1ccccc1",
          "x": 46.53
         },
         {
          "index": 51,
          "smiles": "COc1c(O)cc2c(c1O)[C@H]1O[C@@H](CO)[C@H](O)[C@H](O)[C@H]1OC2=O",
          "x": 145.91
         },
         {
          "index": 52,
          "smiles": "Cc1ccc2c(c1)CC(=O)c1cc([C@H](C)C(=O)O)ccc1O2",
          "x": 63.60000000000001
         },
         {
          "index": 53,
          "smiles": "CCO[C@H]1O[C@@H]2O[C@]3(C)CC[C@H]4[C@@H](C)CC[C@H]([C@@H]1C)[C@@]42OO3",
          "x": 46.150000000000006
         },
         {
          "index": 54,
          "smiles": "C[C@@H](C[N+](C)(C)C)OC(N)=O",
          "x": 52.32
         },
         {
          "index": 55,
          "smiles": "C[N+](C)(C)CCO[C@H](Cc1ccccc1)c1ccccc1",
          "x": 9.23
         },
         {
          "index": 56,
          "smiles": "O=C(OCCN1CCCC1)[C@@]1(c2ccccc2)C[C@@H]2CC[C@H]1C2",
          "x": 29.54
         },
         {
          "index": 57,
          "smiles": "C=CCC1=C(C)[C@@H](OC(=O)[C@H]2[C@@H](C=C(C)C)C2(C)C)CC1=O",
          "x": 43.370000000000005
         },
         {
          "index": 58,
          "smiles": "C[C@H](C(=O)O)c1nc(-c2ccc(Br)cc2)cs1",
          "x": 50.19
         },
         {
          "index": 59,
          "smiles": "COc1cc(C[C@@H](C)N)c(OC)cc1Br",
          "x": 44.48
         },
         {
          "index": 60,
          "smiles": "COc1ccc(C(=O)/C(Br)=C/C(=O)O)cc1",
          "x": 63.60000000000001
         },
         {
          "index": 61,
          "smiles": "CN(C)CCO[C@H](c1ccccc1)c1ccc(Br)cc1",
          "x": 12.47
         },
         {
          "index": 62,
          "smiles": "CN(C)CC[C@@H](c1ccc(Br)cc1)c1ccccn1",
          "x": 16.130000000000003
         },
         {
          "index": 63,
          "smiles": "CC(C)(C)NC[C@H](O)c1cc(Br)no1",
          "x": 58.29
         },
         {
          "index": 64,
          "smiles": "CCOc1ccc(NC(=O)C[C@@H](C)O)cc1",
          "x": 58.56
         },
         {
          "index": 65,
          "smiles": "Cc1ccc(OC[C@H](O)CNC(C)(C)C)c2oc(=O)ccc12",
          "x": 71.7
         },
         {
          "index": 66,
          "smiles": "CC(C)(C)NC[C@@H](O)COc1ccccc1OC[C@@H]1CCCO1",
          "x": 59.95
         },
         {
          "index": 67,
          "smiles": "CCc1cccc2cc([C@H](O)CNC(C)(C)C)oc12",
          "x": 45.4
         },
         {
          "index": 68,
          "smiles": "COc1ccc2c(c1O)-c1c3c(cc4c1[C@H](C2)N(C)CC4)OCO3",
          "x": 51.16000000000001
         },
         {
          "index": 69,
          "smiles": "CC(C)(C)NC[C@@H](O)COc1ccccc1C#N",
          "x": 65.28
         },
         {
          "index": 70,
          "smiles": "Cc1ccc(Cl)c(OC[C@@H](O)CNC(C)(C)C)c1",
          "x": 41.49
         },
         {
          "index": 71,
          "smiles": "CC(C)C(=O)Nc1cccc([C@@H]2CN3CCSC3=N2)c1",
          "x": 44.7
         },
         {
          "index": 72,
          "smiles": "CC[C@H](C(=O)O)c1ccc(-c2ccccc2)cc1",
          "x": 37.3
         },
         {
          "index": 73,
          "smiles": "CCCC(=O)c1cc(F)ccc1OC[C@H](O)CNC(C)(C)C",
          "x": 58.56
         },
         {
          "index": 74,
          "smiles": "CCOC(=O)NNc1ccc(N(CC)C[C@@H](C)O)nn1",
          "x": 99.61
         },
         {
          "index": 75,
          "smiles": "O=C(O)[C@H]1CCc2cc(OCCn3ccnc3)ccc21",
          "x": 64.35
         },
         {
          "index": 76,
          "smiles": "CC1(C)[C@H]2CC[C@]1(C)C(=O)[C@H]2Br",
          "x": 17.07
         },
         {
          "index": 77,
          "smiles": "NC(=O)N1c2ccccc2C2O[C@@H]2c2ccccc21",
          "x": 58.86000000000001
         },
         {
          "index": 78,
          "smiles": "CN(C)CCO[C@@H](c1ccc(Cl)cc1)c1ccccn1",
          "x": 25.36
         },
         {
          "index": 79,
          "smiles": "CN1C(=O)CN(C(N)=O)[C@H](c2ccccc2)c2cc(Cl)ccc21",
          "x": 66.64000000000001
         },
         {
          "index": 80,
          "smiles": "CC(C)(C)NC[C@@H](O)c1ccc(O)c(NC(N)=O)c1",
          "x": 107.61
         },
         {
          "index": 81,
          "smiles": "C#C[C@H](OC(N)=O)c1ccccc1",
          "x": 52.32
         },
         {
          "index": 82,
          "smiles": "CC(C)OC(=O)c1cc2c(OC[C@H](O)CNC(C)(C)C)cccc2[nH]1",
          "x": 83.58000000000001
         },
         {
          "index": 83,
          "smiles": "CC(C)(C)NC[C@@H](O)COc1cccc2c1CCC(=O)N2",
          "x": 70.58999999999999
         },
         {
          "index": 84,
          "smiles": "CCCC(=O)O[C@@H]1CN2CC[C@@H](O)[C@@H]2[C@H](O)[C@H]1O",
          "x": 90.23
         },
         {
          "index": 85,
          "smiles": "CN(C)[C@@](C)(CO)Cc1ccc(Cl)c(Cl)c1",
          "x": 23.47
         },
         {
          "index": 86,
          "smiles": "CNC(=O)COc1ccccc1OC[C@H](O)CNC(C)(C)C",
          "x": 79.82000000000001
         },
         {
          "index": 87,
          "smiles": "O=C(OCCN1CCCCCC1)[C@@H](c1ccsc1)C1CCCCC1",
          "x": 29.54
         },
         {
          "index": 88,
          "smiles": "CN1C(=O)CCS(=O)(=O)[C@H]1c1ccc(Cl)cc1",
          "x": 54.45
         },
         {
          "index": 89,
          "smiles": "NC(=O)NC(=O)[C@@H](Cl)c1ccccc1",
          "x": 72.19
         },
         {
          "index": 90,
          "smiles": "OC[C@@H](O)COc1ccc(Cl)cc1",
          "x": 49.69
         },
         {
          "index": 91,
          "smiles": "NC(=O)OC[C@@H](O)COc1ccc(Cl)cc1",
          "x": 81.78000000000002
         },
         {
          "index": 92,
          "smiles": "CN(C)CCO[C@](C)(c1ccccc1)c1ccc(Cl)cc1",
          "x": 12.47
         },
         {
          "index": 93,
          "smiles": "O=C1N[C@H](CCCl)Oc2ccccc21",
          "x": 38.33
         },
         {
          "index": 94,
          "smiles": "CN1C[C@@H](C[C@H](C#N)C(N)=O)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21",
          "x": 85.91
         },
         {
          "index": 95,
          "smiles": "C[C@H]1C[C@@H](OC(=O)[C@@H](C)O)CC(C)(C)C1",
          "x": 46.53
         },
         {
          "index": 96,
          "smiles": "O[C@]1(c2cccc(Cl)c2)C2=NCCCN2c2ccccc21",
          "x": 35.830000000000005
         },
         {
          "index": 97,
          "smiles": "C[C@H](C(=O)O)c1ccc2c(c1)Cc1ccccc1-2",
          "x": 37.3
         },
         {
          "index": 98,
          "smiles": "c1ccc(C2(c3ccccc3)C[C@@H]2C2=NCCN2)cc1",
          "x": 24.39
         },
         {
          "index": 99,
          "smiles": "C[C@H](CCN(C)C)Nc1cc(O)cc2cccnc12",
          "x": 48.39
         }
        ]
       },
       "layout": "IPY_MODEL_f001c1c8222e46ad9578e8e8583f93c4",
       "savedSelected": [],
       "x_label": "TPSA"
      }
     },
     "f001c1c8222e46ad9578e8e8583f93c4": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
