From 733fa91ea9214dd080b0c33a3842b7b5b3c80667 Mon Sep 17 00:00:00 2001 From: Hadrien Mary Date: Wed, 20 Sep 2023 10:30:48 -0400 Subject: [PATCH 1/4] discard some notebooks during testing --- tests/test_notebooks.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_notebooks.py b/tests/test_notebooks.py index 97cc21e..6a7e018 100644 --- a/tests/test_notebooks.py +++ b/tests/test_notebooks.py @@ -12,6 +12,10 @@ NOTEBOOK_PATHS = sorted(list(TUTORIALS_DIR.glob("*.ipynb"))) NOTEBOOK_PATHS = list(filter(lambda x: x.name not in DISABLE_NOTEBOOKS, NOTEBOOK_PATHS)) +# Discard some notebooks +NOTEBOOKS_TO_DISCARD = ["Basic_Concepts.ipynb"] +NOTEBOOK_PATHS = list(filter(lambda x: x.name not in NOTEBOOKS_TO_DISCARD, NOTEBOOK_PATHS)) + @pytest.mark.parametrize("nb_path", NOTEBOOK_PATHS, ids=[str(n.name) for n in NOTEBOOK_PATHS]) def test_notebook(nb_path): From 7d774e04749d55187b9af994ec46cce7da85805e Mon Sep 17 00:00:00 2001 From: Hadrien Mary Date: Wed, 20 Sep 2023 15:07:10 -0400 Subject: [PATCH 2/4] prodrug done --- docs/tutorials/Basic_Concepts.ipynb | 1482 ++++---------------- docs/tutorials/data/Drug_Prodrug_pairs.csv | 8 + 2 files changed, 262 insertions(+), 1228 deletions(-) create mode 100644 docs/tutorials/data/Drug_Prodrug_pairs.csv diff --git a/docs/tutorials/Basic_Concepts.ipynb b/docs/tutorials/Basic_Concepts.ipynb index a4bec12..9b571fa 100644 --- a/docs/tutorials/Basic_Concepts.ipynb +++ b/docs/tutorials/Basic_Concepts.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 19, "id": "cc35111a-d3a8-4313-962c-290bbf563f35", "metadata": { "tags": [] @@ -38,6 +38,7 @@ "import matplotlib.colors\n", "import seaborn as sns\n", "\n", + "from rdkit.Chem import PandasTools\n", "import datamol as dm\n", "import pandas as pd\n", "\n", @@ -49,11 +50,119 @@ "id": "da48fd38", "metadata": {}, "source": [ - "## Commercial drugs does not always pass common filters\n", + "## Marketed drugs does not always pass medchem filters\n", "\n", "_NOTE(hadim): show that some drugs pass and some other does not pass the filters. It's important to consider the whole pipeline. At early stage, filters and rules might make sense and during LO and further, small critical modifications will make the drug to fail on certain filters that used to work before_\n" ] }, + { + "cell_type": "code", + "execution_count": 3, + "id": "fb228009", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smiles
0Br.CC(N)Cc1ccc(O)cc1
1Br.CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1
2Br.CC1C2Cc3ccc(O)cc3C1(C)CCN2CCc1ccccc1
3Br.CCN(c1cc(-c2ccc(CN3CCOCC3)cc2)cc(C(=O)NCc2c...
4Br.CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21
......
1930c1ccc(-c2ccc(C(c3ccccc3)n3ccnc3)cc2)cc1
1931c1ccc2[nH]c(-c3cscn3)nc2c1
1932c1ccc2c(CCC3CCNCC3)c[nH]c2c1
1933c1ccc2c(c1)Sc1ccccc1N2CC1CN2CCC1CC2
1934c1cnc(N2CCN(Cc3ccc4c(c3)OCO4)CC2)nc1
\n", + "

1935 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " smiles\n", + "0 Br.CC(N)Cc1ccc(O)cc1\n", + "1 Br.CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1\n", + "2 Br.CC1C2Cc3ccc(O)cc3C1(C)CCN2CCc1ccccc1\n", + "3 Br.CCN(c1cc(-c2ccc(CN3CCOCC3)cc2)cc(C(=O)NCc2c...\n", + "4 Br.CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21\n", + "... ...\n", + "1930 c1ccc(-c2ccc(C(c3ccccc3)n3ccnc3)cc2)cc1\n", + "1931 c1ccc2[nH]c(-c3cscn3)nc2c1\n", + "1932 c1ccc2c(CCC3CCNCC3)c[nH]c2c1\n", + "1933 c1ccc2c(c1)Sc1ccccc1N2CC1CN2CCC1CC2\n", + "1934 c1cnc(N2CCN(Cc3ccc4c(c3)OCO4)CC2)nc1\n", + "\n", + "[1935 rows x 1 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = dm.data.chembl_drugs()\n", + "\n", + "data" + ] + }, { "cell_type": "code", "execution_count": 4, @@ -215,34 +324,6 @@ "_NOTE(hadim): shows new drugs less likely to pass common filters (cite a paper if possible)_\n" ] }, - { - "cell_type": "markdown", - "id": "b2964a0b", - "metadata": {}, - "source": [ - "## General Guidelines\n", - "\n", - "_NOTE(hadim): from Manu \"I think there is some ‘guideline’ about the rules in a csv to understand which rules apply to which class of molecules or stage of discovery. It’s mostly heuristic, but could be worth checking properly and highlight to help people getting started.\"_\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d2911b4a", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "024abf1a", - "metadata": {}, - "source": [ - "## New drugs versus old drugs\n", - "\n", - "_NOTE(hadim): shows new drugs less likely to pass common filters (cite a paper if possible)_\n" - ] - }, { "cell_type": "code", "execution_count": null, @@ -258,1221 +339,164 @@ "source": [ "## Case study: pro-drugs\n", "\n", - "In this example, an example of a pro-drug (Atenovofir for HIV) is shown. _ADD MORE ABOUT THE STORY HERE_\n" + "Some drugs are designed are [prodrug](https://en.wikipedia.org/wiki/Prodrug) that will be only be made active once in the human body after being metabolized. Those compounds will tend to have unwanted molecular features that are often flagged by common alerts and rules.\n", + "\n", + "Below we load a small dataset of 7 drug/prodrug pairs and apply some common medchem rules on them." ] }, { "cell_type": "code", - "execution_count": 3, - "id": "07a5d772", + "execution_count": 69, + "id": "1a7a37f0", "metadata": {}, "outputs": [ { "data": { - "image/svg+xml": [ - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DrugDrug molProdrugProdrug molrule_of_fiverule_of_ghoserule_of_veberrule_of_zinc
0Gabapentin
\"Mol\"/
Gabapentin enacarbil
\"Mol\"/
Ro5
Drug: True
Prodrug: True
Ghose
Drug: False
Prodrug: True
Veber
Drug: True
Prodrug: True
Zinc
Drug: True
Prodrug: True
1Dabigatran
\"Mol\"/
Dabigatran etexilate
\"Mol\"/
Ro5
Drug: True
Prodrug: False
Ghose
Drug: False
Prodrug: False
Veber
Drug: False
Prodrug: False
Zinc
Drug: False
Prodrug: False
2Sofosbuvir
\"Mol\"/
Sofosbuvir
\"Mol\"/
Ro5
Drug: True
Prodrug: False
Ghose
Drug: False
Prodrug: False
Veber
Drug: False
Prodrug: False
Zinc
Drug: False
Prodrug: False
3Tedizolid
\"Mol\"/
Tedizolid phosphate
\"Mol\"/
Ro5
Drug: True
Prodrug: False
Ghose
Drug: True
Prodrug: True
Veber
Drug: True
Prodrug: False
Zinc
Drug: True
Prodrug: False
4Isavuconazole
\"Mol\"/
Isavuconazonium
\"Mol\"/
Ro5
Drug: True
Prodrug: False
Ghose
Drug: True
Prodrug: False
Veber
Drug: True
Prodrug: False
Zinc
Drug: True
Prodrug: False
5Aripiprazole
\"Mol\"/
Aripiprazole lauroxil
\"Mol\"/
Ro5
Drug: True
Prodrug: False
Ghose
Drug: True
Prodrug: False
Veber
Drug: True
Prodrug: False
Zinc
Drug: True
Prodrug: False
6ACT-333679
\"Mol\"/
Selexipag
\"Mol\"/
Ro5
Drug: True
Prodrug: True
Ghose
Drug: True
Prodrug: False
Veber
Drug: False
Prodrug: False
Zinc
Drug: True
Prodrug: True
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 3, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Build the dataset\n", - "smiles_list = [\n", - " \"NC1=C2C(N(CC(OCP(O)(O)=O)C)C=N2)=NC=N1\",\n", - " \"NC1=C2C(N(CC(OCP(OCOC(OC(C)C)=O)(OCOC(OC(C)C)=O)=O)C)C=N2)=NC=N1\",\n", - " \"NC1=C2C(N(CC(OCP(OC3=CC=CC=C3)(NC(C)C(OC(C)C)=O)=O)C)C=N2)=NC=N1\",\n", - "]\n", + "# Load the dataset\n", + "data = pd.read_csv(\"./data/Drug_Prodrug_pairs.csv\")\n", "\n", - "data = pd.DataFrame({\"smiles\": smiles_list})\n", - "data[\"mol\"] = data[\"smiles\"].apply(dm.to_mol)\n", + "# Compute mol objects\n", + "data[\"Drug mol\"] = data[\"Drug SMILES\"].apply(dm.to_mol)\n", + "data[\"Prodrug mol\"] = data[\"Prodrug SMILES\"].apply(dm.to_mol)\n", + "\n", + "# Reorder the columns\n", + "data = data[[\"Drug\", \"Drug mol\", \"Prodrug\", \"Prodrug mol\"]]\n", + "\n", + "\n", + "# Apply a few medchem rules to the drugs and prodrugs\n", + "def _apply_rules(row):\n", + " rule_names = [\n", + " (\"Ro5\", \"rule_of_five\"),\n", + " (\"Ghose\", \"rule_of_ghose\"),\n", + " (\"Veber\", \"rule_of_veber\"),\n", + " (\"Zinc\", \"rule_of_zinc\"),\n", + " ]\n", + "\n", + " for rule_label, rule_name in rule_names:\n", + " rule_fn = getattr(mc.rules.basic_rules, rule_name)\n", + "\n", + " # Apply the rule to the drug and prodrug\n", + " drug_ok = rule_fn(dm.copy_mol(row[\"Drug mol\"]))\n", + " prodrug_ok = rule_fn(dm.copy_mol(row[\"Prodrug mol\"]))\n", + "\n", + " row[rule_name] = f\"{rule_label}\\nDrug: {drug_ok}\\nProdrug: {prodrug_ok}\"\n", + "\n", + " return row\n", "\n", - "# Apply basic rules\n", - "data[\"rule_of_five\"] = data[\"smiles\"].apply(mc.rules.basic_rules.rule_of_five)\n", - "data[\"rule_of_ghose\"] = data[\"smiles\"].apply(mc.rules.basic_rules.rule_of_ghose)\n", - "data[\"rule_of_veber\"] = data[\"smiles\"].apply(mc.rules.basic_rules.rule_of_veber)\n", - "data[\"rule_of_zinc\"] = data[\"smiles\"].apply(mc.rules.basic_rules.rule_of_zinc)\n", "\n", - "# Display the molecules\n", - "legends = []\n", - "legends += [f\"Ro5={v}\" for v in data[\"rule_of_five\"]]\n", - "legends += [f\"Ghose={v}\" for v in data[\"rule_of_ghose\"]]\n", - "legends += [f\"Veber={v}\" for v in data[\"rule_of_veber\"]]\n", - "legends += [f\"Zinc={v}\" for v in data[\"rule_of_zinc\"]]\n", + "data = data.apply(_apply_rules, axis=1)\n", "\n", - "mol_list = data[\"mol\"].tolist() * 4\n", + "# Enable drawing in the dataframe\n", + "PandasTools.ChangeMoleculeRendering(data)\n", "\n", - "dm.to_image(mol_list, legends=legends, n_cols=3, mol_size=(300, 200))\n" + "# Small hack to display new lines as well as RDKit drawings\n", + "HTML(data.to_html().replace(\"\\\\n\", \"
\"))\n" ] }, { @@ -1480,16 +504,18 @@ "id": "1973324f", "metadata": {}, "source": [ - "_NOTE(hadim): DISCUSS THE RESULTS._\n" + "While this is not systematic, we observe that many drugs passes the rules while the associated prodrugs does not pass them." ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "id": "333ca047", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "---\n", + "\n", + "-- The End :-)" + ] } ], "metadata": { diff --git a/docs/tutorials/data/Drug_Prodrug_pairs.csv b/docs/tutorials/data/Drug_Prodrug_pairs.csv new file mode 100644 index 0000000..712a2e2 --- /dev/null +++ b/docs/tutorials/data/Drug_Prodrug_pairs.csv @@ -0,0 +1,8 @@ +Drug,Drug SMILES,Prodrug,Prodrug SMILES +Gabapentin,O=C(O)CC1(CN)CCCCC1,Gabapentin enacarbil,CC(C)C(=O)OC(C)OC(=O)NCC1(CCCCC1)CC(=O)O +Dabigatran,CN1C2=C(C=C(C=C2)C(=O)N(CCC(=O)O)C3=CC=CC=N3)N=C1CNC4=CC=C(C=C4)C(=N)N,Dabigatran etexilate,CCCCCCOC(=O)N=C(C1=CC=C(C=C1)NCC2=NC3=C(N2C)C=CC(=C3)C(=O)N(CCC(=O)OCC)C4=CC=CC=N4)N +Sofosbuvir,OP(OC[C@@H]1[C@@H](O)[C@@](C)(F)[C@H](N2C=CC(NC2=O)=O)O1)(O)=O,Sofosbuvir,C[C@@H](C(=O)OC(C)C)N[P@](=O)(OC[C@@H]1[C@H]([C@@]([C@@H](O1)N2C=CC(=O)NC2=O)(C)F)O)OC3=CC=CC=C3 +Tedizolid,O=C4O[C@H](CN4c3cc(F)c(c1ccc(nc1)c2nn(nn2)C)cc3)CO,Tedizolid phosphate,CN1N=NC(=N1)C1=CC=C(C=N1)C1=CC=C(C=C1F)N1C[C@H](COP(O)(O)=O)OC1=O +Isavuconazole,C[C@H]([C@](c1c(F)ccc(F)c1)(O)Cn2ncnc2)c3scc(c4ccc(C#N)cc4)n3,Isavuconazonium,C[C@H]([C@](c1c(F)ccc(F)c1)(O)Cn2nc[n+](C(OC(N(c3ncccc3COC(CNC)=O)C)=O)C)c2)c4scc(c5ccc(C#N)cc5)n4 +Aripiprazole,Clc4cccc(N3CCN(CCCCOc2ccc1c(NC(=O)CC1)c2)CC3)c4Cl,Aripiprazole lauroxil,CCCCCCCCCCCC(=O)OCN1C(=O)CCC2=C1C=C(C=C2)OCCCCN3CCN(CC3)C4=C(C(=CC=C4)Cl)Cl +ACT-333679,CC(N(C1=CN=C(C2=CC=CC=C2)C(C3=CC=CC=C3)=N1)CCCCOCC(O)=O)C,Selexipag,CC(C)N(CCCCOCC(=O)NS(=O)(=O)C)C1=CN=C(C(=N1)C2=CC=CC=C2)C3=CC=CC=C3 \ No newline at end of file From 23436e1383ec5c381277acaaacaa62326663dd8f Mon Sep 17 00:00:00 2001 From: Hadrien Mary Date: Wed, 20 Sep 2023 15:18:18 -0400 Subject: [PATCH 3/4] WIP --- docs/tutorials/Basic_Concepts.ipynb | 217 +++++++++++++--------------- 1 file changed, 98 insertions(+), 119 deletions(-) diff --git a/docs/tutorials/Basic_Concepts.ipynb b/docs/tutorials/Basic_Concepts.ipynb index 9b571fa..3693584 100644 --- a/docs/tutorials/Basic_Concepts.ipynb +++ b/docs/tutorials/Basic_Concepts.ipynb @@ -57,122 +57,42 @@ }, { "cell_type": "code", - "execution_count": 3, - "id": "fb228009", + "execution_count": 70, + "id": "f1d0b87c", "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
smiles
0Br.CC(N)Cc1ccc(O)cc1
1Br.CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1
2Br.CC1C2Cc3ccc(O)cc3C1(C)CCN2CCc1ccccc1
3Br.CCN(c1cc(-c2ccc(CN3CCOCC3)cc2)cc(C(=O)NCc2c...
4Br.CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21
......
1930c1ccc(-c2ccc(C(c3ccccc3)n3ccnc3)cc2)cc1
1931c1ccc2[nH]c(-c3cscn3)nc2c1
1932c1ccc2c(CCC3CCNCC3)c[nH]c2c1
1933c1ccc2c(c1)Sc1ccccc1N2CC1CN2CCC1CC2
1934c1cnc(N2CCN(Cc3ccc4c(c3)OCO4)CC2)nc1
\n", - "

1935 rows × 1 columns

\n", - "
" - ], + "application/vnd.jupyter.widget-view+json": { + "model_id": "77ad091ceae64effbb7f1bd44c69ed92", + "version_major": 2, + "version_minor": 0 + }, "text/plain": [ - " smiles\n", - "0 Br.CC(N)Cc1ccc(O)cc1\n", - "1 Br.CC(NC(C)(C)C)C(=O)c1cccc(Cl)c1\n", - "2 Br.CC1C2Cc3ccc(O)cc3C1(C)CCN2CCc1ccccc1\n", - "3 Br.CCN(c1cc(-c2ccc(CN3CCOCC3)cc2)cc(C(=O)NCc2c...\n", - "4 Br.CN(C)CCCC1(c2ccc(F)cc2)OCc2cc(C#N)ccc21\n", - "... ...\n", - "1930 c1ccc(-c2ccc(C(c3ccccc3)n3ccnc3)cc2)cc1\n", - "1931 c1ccc2[nH]c(-c3cscn3)nc2c1\n", - "1932 c1ccc2c(CCC3CCNCC3)c[nH]c2c1\n", - "1933 c1ccc2c(c1)Sc1ccccc1N2CC1CN2CCC1CC2\n", - "1934 c1cnc(N2CCN(Cc3ccc4c(c3)OCO4)CC2)nc1\n", - "\n", - "[1935 rows x 1 columns]" + "Common alerts filtering: 0%| | 0/1935 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "filter_columns = [\n", " \"rule_of_five\",\n", @@ -339,7 +318,7 @@ "source": [ "## Case study: pro-drugs\n", "\n", - "Some drugs are designed are [prodrug](https://en.wikipedia.org/wiki/Prodrug) that will be only be made active once in the human body after being metabolized. Those compounds will tend to have unwanted molecular features that are often flagged by common alerts and rules.\n", + "Some drugs are designed as [prodrug](https://en.wikipedia.org/wiki/Prodrug) that will be only be made active once in the human body after being metabolized. Those compounds will tend to have unwanted molecular features that are often flagged by common alerts and rules.\n", "\n", "Below we load a small dataset of 7 drug/prodrug pairs and apply some common medchem rules on them." ] From 55491c3d49c94202f6ce3128e8e8d52c398e87ce Mon Sep 17 00:00:00 2001 From: Hadrien Mary Date: Wed, 20 Sep 2023 16:49:55 -0400 Subject: [PATCH 4/4] done? --- docs/index.md | 2 +- docs/tutorials/Basic_Concepts.ipynb | 62 ++++++++++++--------- docs/tutorials/Catalogs.ipynb | 10 ++++ docs/tutorials/Chemical_Groups.ipynb | 12 ++-- docs/tutorials/Constraints_Filtering.ipynb | 10 ++++ docs/tutorials/Functional_API.ipynb | 4 +- docs/tutorials/Medchem_Query_Language.ipynb | 10 ++++ docs/tutorials/Medchem_Rules.ipynb | 10 ++++ docs/tutorials/Molecular_Complexity.ipynb | 10 ++++ docs/tutorials/Structural_Filters.ipynb | 10 ++++ mkdocs.yml | 2 +- 11 files changed, 106 insertions(+), 36 deletions(-) diff --git a/docs/index.md b/docs/index.md index cc06810..e023afa 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,7 +12,7 @@ micromamba install -c conda-forge medchem ## Getting Started -The best way to get started is by going through the tutorials. +The best way to get started is by going through [**the tutorials**](./tutorials/Basic_Concepts.ipynb). ## Usage Notice diff --git a/docs/tutorials/Basic_Concepts.ipynb b/docs/tutorials/Basic_Concepts.ipynb index 3693584..ff79dfc 100644 --- a/docs/tutorials/Basic_Concepts.ipynb +++ b/docs/tutorials/Basic_Concepts.ipynb @@ -7,7 +7,7 @@ "source": [ "# Basic Concepts\n", "\n", - "This tutorial is an introduction to medicinal chemistry molecular filtering. It will show that applying thoes type of filters and rules systematically and blindly is often not a good idea. While powerful such filtering technics must always be carefully assesed and prototyped before using systematically and at large scale.\n" + "This tutorial is an introduction to medicinal chemistry molecular filtering. It will show that applying those type of filters and rules systematically and blindly is often **not a good idea**. While powerful, such filtering technics must always be carefully assesed and prototyped before using systematically and at large scale.\n" ] }, { @@ -52,7 +52,9 @@ "source": [ "## Marketed drugs does not always pass medchem filters\n", "\n", - "_NOTE(hadim): show that some drugs pass and some other does not pass the filters. It's important to consider the whole pipeline. At early stage, filters and rules might make sense and during LO and further, small critical modifications will make the drug to fail on certain filters that used to work before_\n" + "The most obvious example for not blindly applying medicinal filters, alerts and rules systematically is when looking at the already approved and marketed drugs. The below example shows that for many common filters, a large proportion of approved drugs does not pass them.\n", + "\n", + "That being said it's important to keep in mind that all the approved drugs has gone into a very long and lengthy development process in which their structures have been further optimized and finetuned. During that process it's very common to include or exclude particular features that early during a drug pipeline could have been seen as an unwanted feature but turned out to be a beneficial one during the late stages of a program.\n" ] }, { @@ -175,8 +177,10 @@ } ], "source": [ + "# Load ChEMBL approved and marketed drugs\n", "data = dm.data.chembl_drugs()\n", "\n", + "# Build mol objects\n", "data[\"mol\"] = data[\"smiles\"].apply(dm.to_mol)\n", "\n", "# Apply basic rules\n", @@ -250,10 +254,21 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 100, "id": "8a99f510", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABYEAAAGbCAYAAACSzV9bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAD260lEQVR4nOzdeVzN2f8H8Ndtu5XSKmRrJUX2LVuJLGnINoMiDMYghCFSN6EwqLEMRguTpTFjT4wtBjWayTLWsRuMrcXWMqr7+8Ov++12l263TJjX8/G4j+/c8znnfd7nc2/5/d6O8xGIxWIxiIiIiIiIiIiIiOijpFHVCRARERERERERERHRu8MiMBEREREREREREdFHjEVgIiIiIiIiIiIioo8Yi8BEREREREREREREHzEWgYmIiIiIiIiIiIg+YiwCExEREREREREREX3EWAQmIiIiIiIiIiIi+oixCExERERERERERET0EdOq6gSIiNSRPWZMVafw3nPOr4kLwscK378vVM1L3noASNqK35ek6vpLxiruVzq+snyUjZeXi7J48uLKGy9vPaXHyvvv8q6lNFXujaL1KFqTovxUvSfy8lG2fkXv5a1XEWX3p/RalX0fVL1Pyr7/in4W5H0/lOWubJ1lrVfZ51qez6esn0V591HRWlSNoWhcWdeU/b6Q9/mVZ57KVHqesuYta42qzlmsvN81dXMsOa+66y1vHqpQ9mfUx0ad+/Vv/RyUx/uYU1n+zZwr689LovfRvfhFVZ2CWur7zKmUOB/q+kl13AlMRERERERERERE9BFjEZiIiIiIiIiIiIjoI8YiMBEREREREREREdFHjEVgIiIiIiIiIiIioo8Yi8BEREREREREREREHzEWgYmIiIiIiIiIiIg+YiwCExEREREREREREX3EWASmKicQCCASiao6DaxcuRJ2dnbQ0dGBQCBAdna2SuOOHDmC1q1bo1q1ahAIBNi1axfi4uIgEAhw586dd5qzIps2bUKNGjXw8uVLqfbXr18jODgYDRs2hFAohJmZGdzc3HD9+nWpfjdu3ICvry/q168PPT092NraIiAgABkZGVL9Tpw4gRYtWsDQ0BBdunTB5cuXZXKZOHEiunbtCrFYLNX+5s0b2NraIjIysnIWTUREREREREREcmlVdQJE74Nz587B398fn3/+OUaOHAktLS0YGhqW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Re/evREZGYlPPvkEaWlpco9tWLBgAfT19TFt2jSp9qioKDg5OWHYsGFYtmwZli9fju7du0v12bVrF/r06SO1I5qIiIiIiIiIiCoPj4MgtYlEIohEIoXXR4wYgREjRki1DRkyRKZf6eMBgLfnw0ZFRSEqKqrCeY4ZMwZjxoxR2sfPzw9+fn7ljm1lZSU3f2XxFi5cqPC842L9+vVDv379yp0PAPj7+6NNmzb49ddf0a5dO6lrnTp1QnJycpkxWrRogR07dqg8Z1hYmNRu4mI1atTA9u3bFY67efMmTp48iYMHD6o8FxERERERERERlQ93AhN9ZFq3bo0hQ4bILcq+bxYsWAB3d3f06NGjqlMhIiIiIiIiIvposQhMH6TCwkIUFBQofBUWFlYovlgsVhq/oKBA7g7g98WyZcvQpk0bvHz5sqpTUaigoAC2trZYvXp1VadCRERERERERPRRYxGYPkju7u7Q1tZW+LK1ta1Q/I0bNyqNr62tjePHj1fSaipf3bp1ERISAkNDw6pORSEtLS0EBQWhYcOGVZ0KEREREREREdFHjWcC0wdp3bp1Sne5CoXCCsX38vJCWlqa0j6NGjWq0BxERERERERERET/BhaB6YP0rguwZmZmMDMze6dzEBERERERERER/Rt4HAQRERERERERERHRR4xFYCIiIiIiIiIiIqKPGIvARERERERERERERB8xFoGJiIiIiIiIiIiIPmIsAhMRERERERERERF9xLSqOgEiIno3LggfK31fknN+TaXX1e2ritKxFMUvaz3y4ihTcp6SY0u2lRVD2fyqXlMlrqp5FPe9IHwsd86yPrvS10vOrahdUYzS97ZkHHXyUJa/qt+hkrkpWlfJvvLWq2j+0vej9Hrl5Vs6z9LfyeL38mIXtyuatzwUrVvRnPKuyYuliLIcVf2eKRpbnt9PpfsXzyWvray8lLXJ+y6o8vNR3s9S3veqrM9L3nhV+5b395Iq11T5/VPe75u88aXvc+nvQsnPrqzfL4p+vhXlq+zzKSuv0t8NRd9TZb9blP0+kpdj6XXIW7u830eKPtuy7r+870rpNavzHSjrnpT397+iz1XZ560oL3lrUXRfVG0rnXvpOVTpV9afpaoo/XOkzp9RRERUebgTmIiIiIiIiIiIiOgjxiIwERERERERERER0UeMRWAiIiIiIiIiIiKijxiL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PEiOiIiIiIiIiIjeDRaB6V/h7u6O48ePK7zeoEEDhccvqGLjxo0YNWqU0j7Hjh2Dq6trpR1b8T6bNGlSVadQJm9v76pOgYiIiIiIiIjoP4FFYPpXrFu3Di9fvlR4XSgUVii+l5cX0tLSlPZp1KhRheYgIiIiIiIiIiL6ELEITP+Kd12ANTMzg5mZ2Tudg4iIiIiIiIiI6EOkUdUJEBEREREREREREdG7wyIwERERERERERER0UeMRWAiIiIiIiIiIiKijxiLwEREREREREREREQfMRaBiYiIiIiIiIiIiD5iArFYLK7qJIiIyit7zJiqTkGKc35NAMAF4WOV+5fuW94YpeOUHF/6v0v+b3mVnkPefyvKX5U55eVa+lpppddYVm5l5avofpWeT9na5I1TlnPp/qpcV6T0Z6wod0W5lZ5fGXn9St8feXHKujcl11K6vazYyuYqHUPR97QiVLl3qtx/VXNR9hmocr2snMr6fqqST0XnripVPb88yn62gYp/f+XNVdE+/4Z/I4/KnKMiv2Mre66q/Ayrau5/e9735eekPD7EnIkq2734RVWdglrq+8yplDgf6vpJddwJTERERERERERERPQRYxGYiIiIiIiIiIiI6CPGIjARERERERERERHRR4xFYCIiIiIiIiIiIqKPGIvARERERERERERERB8xFoGJiIiIiIiIiIiIPmIsAhMRERERERERERF9xFgEpgoRCAQQiURVnQZWrlwJOzs76OjoQCAQIDs7+1/PITk5GQKBAD/++OO/Pndpv/zyC4RCIe7evStpE4vF+O6779CqVStUr14dZmZm6Nq1KxITE+XGWLlyJRwcHCAUCmFtbY3Q0FC8efNGqs/FixfRqVMnGBoaolWrVjh16pRMnKVLl6Jhw4bIy8uTudalSxdMnTq1YoslIiIiIiIiIiKlWASmD965c+fg7+8PNzc3HD16FCkpKTA0NKzqtKqMWCzG1KlTMXbsWDRo0EDSHhISgnHjxqFt27b46aefEBcXB6FQiL59+2LHjh1SMRYuXIgpU6ZgwIABOHjwIL788kssWrQIEydOlPQpKCjAgAEDYG5ujh07dqB58+bo16+fVAH+zp07CA0Nxdq1a6GrqyuTa1hYGNasWYNr165V/o0gIiIiIiIiIiIAgFZVJ0Dvj5ycHOjr61d1GuV26dIlAMDYsWPRtm3b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VatWSZ1HTERERERERERElU/tIvC0adOgpaWFr7/+Ghs3bpTb5/Tp0+jSpQvOnTsHfX19fPnll2onSuTu7g5tbW2FL1tb2wrF37hxo9L42traOH78eCWt5t3y8fGBl5dXVaehlJubG8aNG1fVaRARERERERERffTUPhPYxsYGq1atwvjx4zF69GgEBgYiKysLAODp6Yk//vgDDx48gFgshkAgwPr161GzZs1KS5z+e9atW4eXL18qvC4UCisU38vLq8wjFBo1alShOYiIiIiIiIiIiP5taheBAWDs2LGoUaMGJk2ahIcPH0rak5KSJP9du3ZtrFmzBv369avIVETvvABrZmYGMzOzdzoHERERERERERHRv61CRWAA6N+/Pzw9PZGUlISTJ0/i4cOHKCwsRK1atdCxY0d4eXlVeIcmEREREREREREREamnwkVgANDW1sYnn3yCTz75pDLCEREREREREREREVElUfvBcCdOnEBqaqrK/c+cOYMTJ06oOx0RERERERERERERqUHtncCurq6oXbs2Hjx4oFL/Tz/9FH/99RcKCgrUnZKIiIiIiIiIiIiIykkgFovF6gzU0NBArVq1pB4Ip4y1tTXu3buHwsJCdaYjIpKSPWbMvz6nc35NXBA+Vvu6uvFK9nPOrwkAMu0lxxRfVxa3tOJ48t6X/m9V1qVonKI1l25X9L50jqXnU2WtJZW8j4rurbz1KHuv7LMpPUbeWHnrl7cWebFU+b6ock/k5VDWOGXxysqjrPtSOreK5KMsR0X/W1Z/ZWso79xl9SurrbLGKFtb6e9XWdS9N2WNL8/9r0gOFc2/vPOU5+e19NiK9inP+Hf1uao7TtGfVYrm+Lc+V6LKxu8u0btzL35RVaeglvo+cyolzoe6flKd2sdBlNfr16+hra39b01HRERERERERERERPiXisDXrl3Ds2fPYGFh8W9MR0RERERERERERET/T+UzgXfv3o3du3dLtT1//hyjR49WOEYsFiM7Oxu//PILBAIBOnfurH6mRERERERERERERFRuKheBz507h7i4OAgEAhQfI5ybm4u4uDiVxteoUQMhISFqJUlERERERERERERE6lG5CNy8eXOMHDlS8n7jxo3Q09PDkCFDFI7R0NBA9erV0aRJEwwcOBDGxsYVSpaIiIiIiIiIiIiIykflInC/fv3Qr18/yfuN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8moMxpd/N1tE3jpXr14lf/78LF68ONnJ63+C+fPn069fPy5dupTilcB5Ow57TVGJiIiIiIjIv83FpRPSO4RUuf//F6S9qizz56fJPPL2skjvAEQkably5aJ///6MHz+eZ8+epXc4aSImJoZJkybh6+urUhAiIiIiIiIiIq+RykHIP1JMTEyi5y0sLLCweLe+4xgxYgQODg5cuXKF9957L73DeWWXLl2iY8eODBo0KL1DERERERERERF5p71bWTL517C2tk70+OSTT9I7xDSXMWNGRo0a9U4kgAHy58/PyJEjsbOzS+9QRERERERERETeaVoJLP9IBw8eTPT8i5uPiYiIiIiIiIiI/JspCSz/SOXLl0/vEERERERERERERP4RVA5CRERERERERERE5B2mJLCIiIiIiIiIiIjIO0xJYBEREREREREREZF3mJLAIiIiIiIiIiIiIu8wJYFFRERERERERERE3mFKAouIiIiIiIiIiIi8w5QEFhEREREREREREXmHKQksIiIiIiIiIiIi8g5TElhERERERERERETkHaYksIiIiIiIiIiIiMg7TElgERERERERERERkXeYksAiIiIiIiIiIiIi77B/TBI4KCiI4sWLY29vj8Fg4Pfff8ff3x+DwWDWz9PTE09PT9PP4eHh+Pv7ExIS8mYDTgfxPY/04ubmhre3d3qH8daIfTe3b99+pXm8vLzo3r27WduIESNo3LgxuXPnxmAwJPrcz549S8uWLcmSJQuOjo7UrVuXQ4cOxdt3+fLllClTBjs7O3LlykX//v15/PixWZ9Lly7RsGFDMmXKRNGiRQkODo4zz8qVK8maNSu3bt2Kc65Tp040b9486RsXEREREREREZFU+0ckgW/dukWnTp1wd3dn8+bNhIaGUrhwYbp160ZoaGiiY8PDwxk9evS/Igks77bg4GD27NmDn5+fWfvXX3/NnTt3aNq0KTY2NgmOv3XrFtWrV+fkyZMsWLCAFStWEBkZiaenJydOnDDru2zZMtq1a0eFChXYtGkTo0aNIjAwkJYtW5r169KlCw8ePGDVqlW0aNGCNm3acObMGdP5Bw8e0K9fP7766iuyZcsWJyZ/f382btzI9u3bU/NIREREREREREQkGazSO4DkOHnyJNHR0XTs2JGaNWua2h0cHMiTJ0+6xBQdHY3BYMDK6h/xCP/RjEYj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U1hYWODu7k7r1q0JCAhg4sSJyR4bERFBo0aNOHv2LM7OzqxevZrHjx9z7949zpw5Q5MmTQgLC6N169acOnUqzngnJye++OIL1q5dy5UrV3jy5Al3794lKiqKffv2UbduXYxGIxMnTmT58uWJxnLw4EGzf6NePL788ssEx8W+qxkzZhAVFZXsexcREZE3R0lgERERkXRkaWlJyZIlGThwIEePHuXjjz8G4McffyQgICCdo3szOnfujMFgICgoiPDw8Hj7rFmzhvv371OzZk3y58//hiOUNyUoKIh79+5RpkwZSpQokd7hJNv333/P6dOnWbFiBV9++SWVKlVK9tgFCxZw+vRp059btmyJldXzX9gsUKAAq1evplChQoSHh8dbHsPd3Z3JkyfTrFkzcuXKZVrJa2VlRcWKFVm/fr3pi5b58+e/4p3GL/Z93blzh1WrVr2Wa4iIiMirURJYRERE5C3h4ODAokWLeP/99wEICAjg7t27Zn0CAwMxGAympM6OHTto3rw5OXPmxNLS0lQnN7mbgrm5uWEwGAgMDIz3/O3btxkwYAAFChTAzs6OnDlz0rp1aw4dOgT8X13fkJCQVN93/vz5qVmzJg8fPmT16tXx9oktBdG1a9dkzXn48GE6d+5Mvnz5sLOzw8nJiSpVqvDNN9+80krFp0+fEhgYSP369cmePTs2NjZky5aN+vXrs3z58iRXb//111/06tWLYsWKkTFjRhwdHfHw8ODjjz9m9erVPHv2zNQ3uRvVveo7WLt2Lc2bNydXrlzY2Njg5OREjRo1mDt3LtHR0QmOW7FiBR9++CHZs2fH2tqaLFmyUKhQIZo2bcqsWbOIjIxMcSzff/89AO3bt0+wz4uf2SdPnjBlyhRKly5NhgwZyJw5M7Vr12bz5s0pvvarSKiEQnJs2LABgEKFCtGsWbM4562trenfvz8AwcHBcf5NSIqtra3p35TLly+nOs6ktGvXDoDvvvvutV1DREREUk9JYBEREZG3iI2NjWm138OHD1m7dm2CfWfMmIGXlxfBwcFERES8UiIqPidPnqR06dJ88803po2pwsPDWbVqFZUrV2b9+vVpdq3Y5G58JSEuXrzI9u3byZgxI61atUpyrm+++YZy5cqxZMkSLl68iJ2dHWFhYYSGhjJgwAA++OADrl27luIYb9y4QdWqVenatSu//PILN2/e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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "filter_columns = [\n", " \"rule_of_five\",\n", @@ -270,12 +285,17 @@ " \"filter_lilly_demerit\",\n", "]\n", "\n", + "# Some sorting for a nice plot\n", + "data[\"n_filters_pass\"] = data[filter_columns].sum(axis=1)\n", + "data = data.sort_values(\"n_filters_pass\", ascending=True)\n", + "\n", + "# Plot\n", "\n", "f, ax = plt.subplots(figsize=(14, 4), constrained_layout=True)\n", "\n", "cmap = matplotlib.colors.ListedColormap([\"#EF6262\", \"#1D5B79\"], None)\n", "\n", - "sns.heatmap(\n", + "a = sns.heatmap(\n", " data[filter_columns].T,\n", " annot=False,\n", " ax=ax,\n", @@ -284,39 +304,27 @@ " cbar=True,\n", " cmap=cmap,\n", ")\n", - "# sns.heatmap(data[filter_columns], annot=False, ax=ax, xticklabels=False, yticklabels=False)\n", "\n", "ax.collections[0].colorbar.set_ticks([0.25, 0.75])\n", - "ax.collections[0].colorbar.set_ticklabels([False, True], fontsize=14)\n", + "ax.collections[0].colorbar.set_ticklabels([\"Don't Pass\", \"Pass\"], fontsize=14)\n", "\n", "ax.set_xlabel(f\"Drug Molecules (n={len(data)})\", fontsize=18)\n", - "_ = ax.set_ylabel(\"Medchem Filters\", fontsize=18)\n" + "ax.set_ylabel(\"Medchem Filters\", fontsize=18)\n", + "\n", + "# Add percentage of passing mols in the y labels\n", + "new_ylabels = []\n", + "for t in ax.yaxis.get_ticklabels():\n", + " perc = data[t.get_text()].sum() / len(data) * 100\n", + " new_ylabels.append(f\"{t.get_text()} ({perc:.0f}%)\")\n", + "_ = ax.yaxis.set_ticklabels(new_ylabels, fontsize=12)\n" ] }, - { - "cell_type": "markdown", - "id": "ff59fb42", - "metadata": {}, - "source": [ - "## New drugs versus old drugs\n", - "\n", - "_NOTE(hadim): shows new drugs less likely to pass common filters (cite a paper if possible)_\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4023936f", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "id": "0a4a63e7", "metadata": {}, "source": [ - "## Case study: pro-drugs\n", + "## Showcasing pro-drugs\n", "\n", "Some drugs are designed as [prodrug](https://en.wikipedia.org/wiki/Prodrug) that will be only be made active once in the human body after being metabolized. Those compounds will tend to have unwanted molecular features that are often flagged by common alerts and rules.\n", "\n", diff --git a/docs/tutorials/Catalogs.ipynb b/docs/tutorials/Catalogs.ipynb index f0c4a53..dab59bf 100644 --- a/docs/tutorials/Catalogs.ipynb +++ b/docs/tutorials/Catalogs.ipynb @@ -711,6 +711,16 @@ "matches = [custom_catalog.HasMatch(x) for x in mols]\n", "dm.to_image(mols, legends=[f\"Match: {x}\" for x in matches])\n" ] + }, + { + "cell_type": "markdown", + "id": "dcef48d4", + "metadata": {}, + "source": [ + "---\n", + "\n", + "-- The End :-)" + ] } ], "metadata": { diff --git a/docs/tutorials/Chemical_Groups.ipynb b/docs/tutorials/Chemical_Groups.ipynb index a1d1b51..ff8c2ca 100644 --- a/docs/tutorials/Chemical_Groups.ipynb +++ b/docs/tutorials/Chemical_Groups.ipynb @@ -588,12 +588,14 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "4f369694", + "cell_type": "markdown", + "id": "f446e5b2", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "---\n", + "\n", + "-- The End :-)" + ] } ], "metadata": { diff --git a/docs/tutorials/Constraints_Filtering.ipynb b/docs/tutorials/Constraints_Filtering.ipynb index fddfa5b..e2aac6d 100644 --- a/docs/tutorials/Constraints_Filtering.ipynb +++ b/docs/tutorials/Constraints_Filtering.ipynb @@ -515,6 +515,16 @@ "\n", "dm.to_image(mols, legends=legends)" ] + }, + { + "cell_type": "markdown", + "id": "2021dfa2", + "metadata": {}, + "source": [ + "---\n", + "\n", + "-- The End :-)" + ] } ], "metadata": { diff --git a/docs/tutorials/Functional_API.ipynb b/docs/tutorials/Functional_API.ipynb index bf0ddb4..1a669c6 100644 --- a/docs/tutorials/Functional_API.ipynb +++ b/docs/tutorials/Functional_API.ipynb @@ -9121,12 +9121,12 @@ }, { "cell_type": "markdown", - "id": "51768c29", + "id": "8713cdbb", "metadata": {}, "source": [ "---\n", "\n", - "The End!" + "-- The End :-)" ] } ], diff --git a/docs/tutorials/Medchem_Query_Language.ipynb b/docs/tutorials/Medchem_Query_Language.ipynb index 883c28d..65ec267 100644 --- a/docs/tutorials/Medchem_Query_Language.ipynb +++ b/docs/tutorials/Medchem_Query_Language.ipynb @@ -1135,6 +1135,16 @@ " - OR operator : `OR` or `|` or `||` or `or`\n", " - NOT operator : `NOT` or `!` or `~` or `not`\n" ] + }, + { + "cell_type": "markdown", + "id": "a851c80b", + "metadata": {}, + "source": [ + "---\n", + "\n", + "-- The End :-)" + ] } ], "metadata": { diff --git a/docs/tutorials/Medchem_Rules.ipynb b/docs/tutorials/Medchem_Rules.ipynb index 0acfb9f..17e60dd 100644 --- a/docs/tutorials/Medchem_Rules.ipynb +++ b/docs/tutorials/Medchem_Rules.ipynb @@ -1654,6 +1654,16 @@ "# Apply rule #2\n", "rule_2(mol)" ] + }, + { + "cell_type": "markdown", + "id": "eb05d65b", + "metadata": {}, + "source": [ + "---\n", + "\n", + "-- The End :-)" + ] } ], "metadata": { diff --git a/docs/tutorials/Molecular_Complexity.ipynb b/docs/tutorials/Molecular_Complexity.ipynb index daebd6c..7a36e4a 100644 --- a/docs/tutorials/Molecular_Complexity.ipynb +++ b/docs/tutorials/Molecular_Complexity.ipynb @@ -1466,6 +1466,16 @@ "\n", "dm.to_image(data[\"mol\"].tolist(), legends=legends, mol_size=(300, 200))" ] + }, + { + "cell_type": "markdown", + "id": "165a451d", + "metadata": {}, + "source": [ + "---\n", + "\n", + "-- The End :-)" + ] } ], "metadata": { diff --git a/docs/tutorials/Structural_Filters.ipynb b/docs/tutorials/Structural_Filters.ipynb index c462899..bf564e3 100644 --- a/docs/tutorials/Structural_Filters.ipynb +++ b/docs/tutorials/Structural_Filters.ipynb @@ -3126,6 +3126,16 @@ "\n", "results.head()" ] + }, + { + "cell_type": "markdown", + "id": "3bae7171", + "metadata": {}, + "source": [ + "---\n", + "\n", + "-- The End :-)" + ] } ], "metadata": { diff --git a/mkdocs.yml b/mkdocs.yml index ba784f5..d0fd1a8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -14,7 +14,6 @@ strict: true nav: - Overview: index.md - - CLI: cli.md - Tutorials: - Basic Concepts: tutorials/Basic_Concepts.ipynb - Functional API: tutorials/Functional_API.ipynb @@ -25,6 +24,7 @@ nav: - Medchem Query Language: tutorials/Medchem_Query_Language.ipynb - Molecular Complexity: tutorials/Molecular_Complexity.ipynb - Constraints Filtering: tutorials/Constraints_Filtering.ipynb + - CLI: cli.md - API: - medchem.rules: api/medchem.rules.md - medchem.structural: api/medchem.structural.md