{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Quickstart\n",
"First let import the modules to work with. Some functionalities of MolDrug may not be available on pypi or conda yet. This could be because the new version is not yet release, but in brief it is going to be. You could install directly from the repo if some problem pops up. Just paste the following in a code cell:\n",
"```bash\n",
"! pip install git+https://github.com/ale94mleon/MolDrug.git@main\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from rdkit import Chem\n",
"from moldrug import utils, fitness\n",
"from moldrug.data import receptors, ligands, boxes\n",
"import tempfile, os, gzip, shutil, requests\n",
"from multiprocessing import cpu_count"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will use some test examples from `moldrug.data` module."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Creating a temporal directory\n",
"tmp_path = tempfile.TemporaryDirectory()\n",
"# Creating receptors files\n",
"r_x0161_file = os.path.join(tmp_path.name, 'r_x0161.pdbqt')\n",
"with open(r_x0161_file, 'w') as r:\n",
" r.write(receptors.r_x0161)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's download the crem data base. Here we are downloading the smaller one. But consider to visit [CReM](https://github.com/DrrDom/crem) for more information about how to use and create the data base of fragments."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"url = \"http://www.qsar4u.com/files/cremdb/replacements02_sc2.db.gz\"\n",
"r = requests.get(url, allow_redirects=True)\n",
"crem_dbgz_path = os.path.join(tmp_path.name,'crem.db.gz')\n",
"crem_db_path = os.path.join(tmp_path.name,'crem.db')\n",
"open(crem_dbgz_path, 'wb').write(r.content)\n",
"with gzip.open(crem_dbgz_path, 'rb') as f_in:\n",
" with open(crem_db_path, 'wb') as f_out:\n",
" shutil.copyfileobj(f_in, f_out)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's initialize the `GA` class. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"maxiter = 3\n",
"popsize = 20\n",
"njobs = 2\n",
"\n",
"out = utils.GA(\n",
" seed_mol=Chem.MolFromSmiles(ligands.r_x0161),\n",
" maxiter=maxiter,\n",
" popsize=popsize,\n",
" crem_db_path = crem_db_path,\n",
" pc = 1,\n",
" get_similar = False,\n",
" mutate_crem_kwargs = {\n",
" 'radius':3,\n",
" 'min_size':1,\n",
" 'max_size':8,\n",
" 'min_inc':-5,\n",
" 'max_inc':3,\n",
" 'ncores':cpu_count(),\n",
" },\n",
" costfunc = fitness.Cost,\n",
" costfunc_kwargs = {\n",
" 'vina_executable': 'vina',\n",
" 'receptor_path': r_x0161_file,\n",
" 'boxcenter' : boxes.r_x0161[\"A\"]['boxcenter'] ,\n",
" 'boxsize': boxes.r_x0161[\"A\"]['boxsize'],\n",
" 'exhaustiveness': 4,\n",
" 'ncores': int(cpu_count() / njobs),\n",
" 'num_modes': 1,\n",
" },\n",
" save_pop_every_gen = 20,\n",
" deffnm = os.path.join(tmp_path.name, 'pop_test_single_receptor'),\n",
" AddHs=True\n",
")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then let's call the class"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Creating the first population with 20 members:\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 20/20 [00:38<00:00, 1.92s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Initial Population: Best individual: Individual(idx = 15, smiles = NS(=O)(=O)c1ccc(-n2c(=O)[nH][nH]c2=O)cc1, cost = 0.8145165194871083)\n",
"File /tmp/tmp6q8frrym/pop_test_single_receptor_pop.sdf was createad!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluating generation 1 / 3:\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 20/20 [00:47<00:00, 2.39s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generation 1: Best Individual: Individual(idx = 30, smiles = NC(=O)CCc1ccc(N2CCNCC2)cc1, cost = 0.7203191036452627).\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluating generation 2 / 3:\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 20/20 [00:54<00:00, 2.72s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generation 2: Best Individual: Individual(idx = 30, smiles = NC(=O)CCc1ccc(N2CCNCC2)cc1, cost = 0.7203191036452627).\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluating generation 3 / 3:\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 20/20 [00:52<00:00, 2.60s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File /tmp/tmp6q8frrym/pop_test_single_receptor_pop.sdf was createad!\n",
"Generation 3: Best Individual: Individual(idx = 30, smiles = NC(=O)CCc1ccc(N2CCNCC2)cc1, cost = 0.7203191036452627).\n",
"\n",
"\n",
"=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+\n",
"\n",
"The simulation finished successfully after 3 generations with a population of 20 individuals. A total number of 80 Individuals were seen during the simulation.\n",
"Initial Individual: Individual(idx = 0, smiles = COC(=O)c1ccc(S(N)(=O)=O)cc1, cost = 1.0)\n",
"Final Individual: Individual(idx = 30, smiles = NC(=O)CCc1ccc(N2CCNCC2)cc1, cost = 0.7203191036452627)\n",
"The cost function droped in 0.27968089635473725 units.\n",
"\n",
"=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+\n",
"\n",
"'__call__' 257648.92 ms\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"out(njobs = njobs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a very silly example. In real life, you should increase the population size and the number of generation. In this way we explore in a better way the chemical space. The `GA` class has some nice methods that give you an idea of the obtained results."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" smiles | \n",
" pdbqt | \n",
" cost | \n",
" idx | \n",
" qed | \n",
" sa_score | \n",
" vina_score | \n",
"
\n",
" \n",
" \n",
" \n",
" | 75 | \n",
" [H]c1c([H])c(-n2c(C([H])([H])[H])c([H])c([H])c... | \n",
" MODEL 1\\nREMARK VINA RESULT: -6.8 0.... | \n",
" 1.000000 | \n",
" 75 | \n",
" 0.819081 | \n",
" 7.446127 | \n",
" -6.8 | \n",
"
\n",
" \n",
" | 76 | \n",
" [H]OC([H])([H])n1nnn(-c2c([H])c([H])c(C(=O)OC(... | \n",
" MODEL 1\\nREMARK VINA RESULT: -6.2 0.... | \n",
" 0.838417 | \n",
" 76 | \n",
" 0.644502 | \n",
" 6.395654 | \n",
" -6.2 | \n",
"
\n",
" \n",
" | 77 | \n",
" [H]c1c([H])c(S(=O)(=O)C([H])([H])C(=O)N(C([H])... | \n",
" MODEL 1\\nREMARK VINA RESULT: -5.9 0.... | \n",
" 1.000000 | \n",
" 77 | \n",
" 0.781446 | \n",
" 6.987495 | \n",
" -5.9 | \n",
"
\n",
" \n",
" | 78 | \n",
" [H]OC(=O)C([H])(O[H])C(=C([H])[H])c1c([H])c([H... | \n",
" MODEL 1\\nREMARK VINA RESULT: -5.8 0.... | \n",
" 1.000000 | \n",
" 78 | \n",
" 0.759651 | \n",
" 7.469266 | \n",
" -5.8 | \n",
"
\n",
" \n",
" | 79 | \n",
" [H]c1c([H])c(C([H])([H])C([H])([H])C(=O)N([H])... | \n",
" MODEL 1\\nREMARK VINA RESULT: -6.4 0.... | \n",
" 0.844438 | \n",
" 79 | \n",
" 0.818279 | \n",
" 6.774127 | \n",
" -6.4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" smiles \\\n",
"75 [H]c1c([H])c(-n2c(C([H])([H])[H])c([H])c([H])c... \n",
"76 [H]OC([H])([H])n1nnn(-c2c([H])c([H])c(C(=O)OC(... \n",
"77 [H]c1c([H])c(S(=O)(=O)C([H])([H])C(=O)N(C([H])... \n",
"78 [H]OC(=O)C([H])(O[H])C(=C([H])[H])c1c([H])c([H... \n",
"79 [H]c1c([H])c(C([H])([H])C([H])([H])C(=O)N([H])... \n",
"\n",
" pdbqt cost idx \\\n",
"75 MODEL 1\\nREMARK VINA RESULT: -6.8 0.... 1.000000 75 \n",
"76 MODEL 1\\nREMARK VINA RESULT: -6.2 0.... 0.838417 76 \n",
"77 MODEL 1\\nREMARK VINA RESULT: -5.9 0.... 1.000000 77 \n",
"78 MODEL 1\\nREMARK VINA RESULT: -5.8 0.... 1.000000 78 \n",
"79 MODEL 1\\nREMARK VINA RESULT: -6.4 0.... 0.844438 79 \n",
"\n",
" qed sa_score vina_score \n",
"75 0.819081 7.446127 -6.8 \n",
"76 0.644502 6.395654 -6.2 \n",
"77 0.781446 6.987495 -5.9 \n",
"78 0.759651 7.469266 -5.8 \n",
"79 0.818279 6.774127 -6.4 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"out.to_dataframe().tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You could save the entire class for future in a compressed or uncompressed pickle file. Here I just saved the file in the temporal directory, you could change the path to your current working directory."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"out.pickle(os.path.join(tmp_path.name, f\"NumGens_{out.NumGens}_PopSize_{popsize}\"), compress=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Could be that after a long simulation we would like to perform a different searching strategy over the last population. This is really simple, we could \"initialize\" again the `out` instance with a different set of parameters. Let say that we would like to be close to the last solutions. Then we could use the parameters: `min_size=0, max_size=1, min_inc=-1, max_inc=1`.This flavor will add, delate mutate heavy atoms or change hydrogens to heavy atoms."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"out.maxiter = 5\n",
"out.mutate_crem_kwargs = {\n",
" 'radius':3,\n",
" 'min_size':0,\n",
" 'max_size':1,\n",
" 'min_inc':-1,\n",
" 'max_inc':1,\n",
" 'ncores':cpu_count(),\n",
" }"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And run again the class"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"File /tmp/tmp6q8frrym/pop_test_single_receptor_pop.sdf was createad!\n",
"Evaluating generation 4 / 8:\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 20/20 [00:49<00:00, 2.49s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generation 4: Best Individual: Individual(idx = 30, smiles = NC(=O)CCc1ccc(N2CCNCC2)cc1, cost = 0.7203191036452627).\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluating generation 5 / 8:\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 19/19 [00:54<00:00, 2.85s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generation 5: Best Individual: Individual(idx = 30, smiles = NC(=O)CCc1ccc(N2CCNCC2)cc1, cost = 0.7203191036452627).\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluating generation 6 / 8:\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 17/17 [00:48<00:00, 2.85s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generation 6: Best Individual: Individual(idx = 132, smiles = Cc1cc(CCC(N)=O)ccc1N1CCNCC1, cost = 0.6991101572359109).\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluating generation 7 / 8:\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 16/16 [00:49<00:00, 3.09s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generation 7: Best Individual: Individual(idx = 132, smiles = Cc1cc(CCC(N)=O)ccc1N1CCNCC1, cost = 0.6991101572359109).\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Evaluating generation 8 / 8:\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 18/18 [00:45<00:00, 2.53s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File /tmp/tmp6q8frrym/pop_test_single_receptor_pop.sdf was createad!\n",
"Generation 8: Best Individual: Individual(idx = 164, smiles = N#CNS(=O)(=O)c1ccc(-n2c(=O)[nH][nH]c2=O)cc1Br, cost = 0.6683728823567392).\n",
"\n",
"\n",
"=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+\n",
"\n",
"The simulation finished successfully after 8 generations with a population of 20 individuals. A total number of 170 Individuals were seen during the simulation.\n",
"Initial Individual: Individual(idx = 0, smiles = COC(=O)c1ccc(S(N)(=O)=O)cc1, cost = 1.0)\n",
"Final Individual: Individual(idx = 164, smiles = N#CNS(=O)(=O)c1ccc(-n2c(=O)[nH][nH]c2=O)cc1Br, cost = 0.6683728823567392)\n",
"The cost function droped in 0.3316271176432608 units.\n",
"\n",
"=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+\n",
"\n",
"'__call__' 266955.44 ms\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"out(njobs = njobs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As you can see the `GA` class is updated rather that replaced. This is a perfect feature for rerun with different ideas. As you see the number of generations is also updated as well the number of calls."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"8 2\n"
]
}
],
"source": [
"print(out.NumGens, out.NumCalls)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The same idea is for the rest of the methods and atributtes"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" smiles | \n",
" pdbqt | \n",
" cost | \n",
" idx | \n",
" qed | \n",
" sa_score | \n",
" vina_score | \n",
"
\n",
" \n",
" \n",
" \n",
" | 165 | \n",
" [H]c1c(Br)c(OC([H])([H])C(=O)C([H])(Cl)Cl)c(OC... | \n",
" MODEL 1\\nREMARK VINA RESULT: -6.7 0.... | \n",
" 0.730751 | \n",
" 165 | \n",
" 0.678321 | \n",
" 6.247825 | \n",
" -6.7 | \n",
"
\n",
" \n",
" | 166 | \n",
" [H]Oc1c([H])c(-c2noc(N([H])[H])c2[H])c([H])c(O... | \n",
" MODEL 1\\nREMARK VINA RESULT: -6.5 0.... | \n",
" 0.795321 | \n",
" 166 | \n",
" 0.682974 | \n",
" 6.541091 | \n",
" -6.5 | \n",
"
\n",
" \n",
" | 167 | \n",
" [H]c1c([H])c(S(=O)(=O)N(Cl)Cl)c([H])c([H])c1-n... | \n",
" MODEL 1\\nREMARK VINA RESULT: -6.4 0.... | \n",
" 0.740191 | \n",
" 167 | \n",
" 0.783261 | \n",
" 5.947768 | \n",
" -6.4 | \n",
"
\n",
" \n",
" | 168 | \n",
" [H]c1c([H])c(S([H])(=O)=O)c([H])c([H])c1-n1c(=... | \n",
" MODEL 1\\nREMARK VINA RESULT: -6.1 0.... | \n",
" 0.893223 | \n",
" 168 | \n",
" 0.575643 | \n",
" 6.600720 | \n",
" -6.1 | \n",
"
\n",
" \n",
" | 169 | \n",
" [H]c1c([H])c(C([H])([H])OC(=O)N([H])[H])c([H])... | \n",
" MODEL 1\\nREMARK VINA RESULT: -6.5 0.... | \n",
" 0.803898 | \n",
" 169 | \n",
" 0.641205 | \n",
" 6.565248 | \n",
" -6.5 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" smiles \\\n",
"165 [H]c1c(Br)c(OC([H])([H])C(=O)C([H])(Cl)Cl)c(OC... \n",
"166 [H]Oc1c([H])c(-c2noc(N([H])[H])c2[H])c([H])c(O... \n",
"167 [H]c1c([H])c(S(=O)(=O)N(Cl)Cl)c([H])c([H])c1-n... \n",
"168 [H]c1c([H])c(S([H])(=O)=O)c([H])c([H])c1-n1c(=... \n",
"169 [H]c1c([H])c(C([H])([H])OC(=O)N([H])[H])c([H])... \n",
"\n",
" pdbqt cost idx \\\n",
"165 MODEL 1\\nREMARK VINA RESULT: -6.7 0.... 0.730751 165 \n",
"166 MODEL 1\\nREMARK VINA RESULT: -6.5 0.... 0.795321 166 \n",
"167 MODEL 1\\nREMARK VINA RESULT: -6.4 0.... 0.740191 167 \n",
"168 MODEL 1\\nREMARK VINA RESULT: -6.1 0.... 0.893223 168 \n",
"169 MODEL 1\\nREMARK VINA RESULT: -6.5 0.... 0.803898 169 \n",
"\n",
" qed sa_score vina_score \n",
"165 0.678321 6.247825 -6.7 \n",
"166 0.682974 6.541091 -6.5 \n",
"167 0.783261 5.947768 -6.4 \n",
"168 0.575643 6.600720 -6.1 \n",
"169 0.641205 6.565248 -6.5 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"out.to_dataframe().tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is the best solution of this simulation (in your case you could get a different one):"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Chem.MolFromSmiles(out.pop[0].smiles)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And here is the input"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from rdkit import Chem\n",
"Chem.MolFromSmiles(\"COC(=O)C=1C=CC(=CC1)S(=O)(=O)N\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Printing some information"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Initial vina score: -5.2. Final vina score: -7.2\n",
"sascorer of the best Individual: 5.796739279673451\n",
"QED of the best Individual: 0.4940340217312014\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" value | \n",
"
\n",
" \n",
" \n",
" \n",
" | NumHAcceptors | \n",
" 6.00000 | \n",
"
\n",
" \n",
" | NumHDonors | \n",
" 3.00000 | \n",
"
\n",
" \n",
" | wt | \n",
" 360.14900 | \n",
"
\n",
" \n",
" | MLogP | \n",
" -0.62422 | \n",
"
\n",
" \n",
" | NumRotatableBonds | \n",
" 3.00000 | \n",
"
\n",
" \n",
" | TPSA | \n",
" 140.61000 | \n",
"
\n",
" \n",
" | FractionCSP3 | \n",
" 0.00000 | \n",
"
\n",
" \n",
" | HeavyAtomCount | \n",
" 20.00000 | \n",
"
\n",
" \n",
" | NHOHCount | \n",
" 3.00000 | \n",
"
\n",
" \n",
" | NOCount | \n",
" 9.00000 | \n",
"
\n",
" \n",
" | NumAliphaticCarbocycles | \n",
" 0.00000 | \n",
"
\n",
" \n",
" | NumAliphaticHeterocycles | \n",
" 0.00000 | \n",
"
\n",
" \n",
" | NumAliphaticRings | \n",
" 0.00000 | \n",
"
\n",
" \n",
" | NumAromaticCarbocycles | \n",
" 1.00000 | \n",
"
\n",
" \n",
" | NumAromaticHeterocycles | \n",
" 1.00000 | \n",
"
\n",
" \n",
" | NumAromaticRings | \n",
" 2.00000 | \n",
"
\n",
" \n",
" | NumHeteroatoms | \n",
" 11.00000 | \n",
"
\n",
" \n",
" | NumSaturatedCarbocycles | \n",
" 0.00000 | \n",
"
\n",
" \n",
" | NumSaturatedHeterocycles | \n",
" 0.00000 | \n",
"
\n",
" \n",
" | NumSaturatedRings | \n",
" 0.00000 | \n",
"
\n",
" \n",
" | RingCount | \n",
" 2.00000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" value\n",
"NumHAcceptors 6.00000\n",
"NumHDonors 3.00000\n",
"wt 360.14900\n",
"MLogP -0.62422\n",
"NumRotatableBonds 3.00000\n",
"TPSA 140.61000\n",
"FractionCSP3 0.00000\n",
"HeavyAtomCount 20.00000\n",
"NHOHCount 3.00000\n",
"NOCount 9.00000\n",
"NumAliphaticCarbocycles 0.00000\n",
"NumAliphaticHeterocycles 0.00000\n",
"NumAliphaticRings 0.00000\n",
"NumAromaticCarbocycles 1.00000\n",
"NumAromaticHeterocycles 1.00000\n",
"NumAromaticRings 2.00000\n",
"NumHeteroatoms 11.00000\n",
"NumSaturatedCarbocycles 0.00000\n",
"NumSaturatedHeterocycles 0.00000\n",
"NumSaturatedRings 0.00000\n",
"RingCount 2.00000"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"from moldrug import utils\n",
"import pandas as pd\n",
"sascorer = utils.import_sascorer()\n",
"\n",
"\n",
"fig, ax = plt.subplots(nrows = 6, figsize = (16,20))\n",
"\n",
"ax[0].plot(range(len(out.SawIndividuals)),[Individual.qed for Individual in out.SawIndividuals], 'o')\n",
"ax[0].set(title = 'qed')\n",
"\n",
"ax[1].plot(range(len(out.SawIndividuals)),[Individual.sa_score for Individual in out.SawIndividuals], 'o')\n",
"ax[1].set(title = 'sa_score')\n",
"\n",
"ax[2].plot(range(len(out.SawIndividuals)),[Individual.vina_score for Individual in out.SawIndividuals], 'o')\n",
"ax[2].set(title = 'vina_score')\n",
"\n",
"ax[3].plot(range(len(out.SawIndividuals)),[Individual.cost for Individual in out.SawIndividuals], 'o')\n",
"ax[3].set(title = 'cost')\n",
"\n",
"ax[4].plot(range(len(out.avg_cost)),out.avg_cost, 'o')\n",
"ax[4].set(title = 'avg_cost')\n",
"\n",
"ax[5].plot(range(len(out.bestcost)),out.bestcost, 'o')\n",
"ax[5].set(title = 'bestcost')\n",
"\n",
"\n",
"print(f\"Initial vina score: {out.InitIndividual.vina_score}. Final vina score: {out.pop[0].vina_score}\")\n",
"print(f\"sascorer of the best Individual: {sascorer.calculateScore(out.pop[0].mol)}\")\n",
"print(f\"QED of the best Individual: {fitness.QED.weights_mean(out.pop[0].mol)}\")\n",
"\n",
"pd.DataFrame(utils.lipinski_profile(out.pop[0].mol), index=['value']).T"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.13 ('moldrug')",
"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.9.13"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "580997a69bc0f3991857025e1d93e87ed090e2c1fa4aff0ca8e9824f56baf8cb"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}