From 5555f66860600eb3f937950b0aceceb0609752ab Mon Sep 17 00:00:00 2001 From: "hippolyte.pik" Date: Fri, 23 May 2025 17:28:20 +0200 Subject: [PATCH] init --- BINF2025_tp6.ipynb | 702 +++++++++++++++++++++++---------------------- 1 file changed, 366 insertions(+), 336 deletions(-) diff --git a/BINF2025_tp6.ipynb b/BINF2025_tp6.ipynb index 089684b..cba653d 100644 --- a/BINF2025_tp6.ipynb +++ b/BINF2025_tp6.ipynb @@ -1,338 +1,368 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [], - "authorship_tag": "ABX9TyMlj7yAC/ydT3s7LpoX8Wj2", - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## BINF TP6 : bases de données métaboliques et rdkit\n", - "\n", - "Les bases de données métaboliques stockent des informations sur les composés et réaction chimiques présentes chez différents organismes ainsi que les enzymes associées. rdkit est une bibliothèque de manipulation de composés et réactions chimiques.\n", - "\n", - "Installons rdkit :" - ], - "metadata": { - "id": "x3gbtL4QjAil" - } - }, - { - "cell_type": "code", - "source": [ - "!pip install rdkit" - ], - "metadata": { - "id": "N5fiDGAcmwW1" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Exercice 1 : Base de données Kegg et visualisation du cycle TCA\n", - "\n", - "[https://www.genome.jp/kegg/](https://www.genome.jp/kegg/)\n", - "\n", - "1. Utilisez le module «pathway » de la base de donnes Kegg pour visualiser le cycle de l’acide citrique. Appelé en anglais : TCA cycle, citric acid cycle ou encore Krebs cycle.\n", - "2. Combien de reactions contient-il ? On s'intéresse uniquement aux réactions du cycle contenant l'acide citrique." - ], - "metadata": { - "id": "qgWmNE_-mun5" - } - }, - { - "cell_type": "markdown", - "source": [ - "Votre réponse ici." - ], - "metadata": { - "id": "xReGWi0G5Euo" - } - }, - { - "cell_type": "markdown", - "source": [ - "3. Quels sont les identifiants EC (E.C numbers) associes à chacune de ces réactions." - ], - "metadata": { - "id": "fr0mAXml5Dlv" - } - }, - { - "cell_type": "markdown", - "source": [ - "Votre réponse ici" - ], - "metadata": { - "id": "zzZt_NEm5Jxu" - } - }, - { - "cell_type": "markdown", - "source": [ - "4. Pourquoi certains identifiants EC sont-ils en double ?" - ], - "metadata": { - "id": "9Ccrjixj5LI5" - } - }, - { - "cell_type": "markdown", - "source": [ - "Votre réponse ici." - ], - "metadata": { - "id": "H1H4CqSc5OJw" - } - }, - { - "cell_type": "markdown", - "source": [ - "5. Qu’observez-vous de plus à propos de ces EC numbers ?" - ], - "metadata": { - "id": "OSXnNhXJ5Q2r" - } - }, - { - "cell_type": "markdown", - "source": [ - "Votre réponse ici." - ], - "metadata": { - "id": "jVgDoP7k5SnX" - } - }, - { - "cell_type": "markdown", - "source": [ - "Malheureusement la base de données KEGG ne peut pas être téléchargée gratuitement, nous allons donc changer de base de données." - ], - "metadata": { - "id": "9_YKyLxU5UCx" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Exercice 2 : Base de données Rhea et visualisation du cycle TCA\n", - "\n", - "[https://www.rhea-db.org/](https://www.rhea-db.org/)\n", - "\n", - "A L’inverse, la base de données Rhea est téléchargeable, mais elle ne fournit pas de visualisation des voies métaboliques. C’est pour ça que l’on a fait la partie précédente avec KEGG.\n", - "\n", - "\n", - "1. Trouvez les IDs Rhea associés aux EC numbers extraits dans l'exercice précédent. Faites attention à choisir des réactions unidirectionnelles. Si vous avez l’id d’une réaction bidirectionnelle, id+1 et id+2 devraient correspondre aux réactions décomposées dans chaque sens. Faites attention au sens de réaction." - ], - "metadata": { - "id": "Gpbi8aO6kRFl" - } - }, - { - "cell_type": "markdown", - "source": [ - "Votre réponse ici" - ], - "metadata": { - "id": "HnDqzpRL5qgU" - } - }, - { - "cell_type": "markdown", - "source": [ - "2. Téléchargez Rhea, choisissez le format « rhea-reaction-smiles.tsv ». Quel est ce format ?" - ], - "metadata": { - "id": "eanm0mpo5raX" - } - }, - { - "cell_type": "markdown", - "source": [ - "Votre réponse ici." - ], - "metadata": { - "id": "FDpE8Bdq5z6M" - } - }, - { - "cell_type": "markdown", - "source": [ - "3. Chargez ce fichier via RdKit via \"rdChemReactions.ReactionFromSmarts\" du module rdkit.Chem" - ], - "metadata": { - "id": "I8SnIgek50oA" - } - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "guPceFEci_lI" - }, - "outputs": [], - "source": [ - "print(\"Votre code ici !!\")" - ] - }, - { - "cell_type": "markdown", - "source": [ - "4. Cherchez dans ces réactions celles associées au cycle TCA en vous basant sur l’ID Rhea." - ], - "metadata": { - "id": "qXWJXyzsk-AE" - } - }, - { - "cell_type": "code", - "source": [ - "print(\"votre code ici !!\")" - ], - "metadata": { - "id": "g0wWVKGwlDFF" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "5. Affichez les réactions du cycle TCA, vous pouvez utiliser la fonction display de « IPython.display » sur une réaction, vous devez aussi importer\n", - "\n", - "« from rdkit.Chem.Draw import IPythonConsole »" - ], - "metadata": { - "id": "dnysSbI5lF_b" - } - }, - { - "cell_type": "code", - "source": [ - "print(\"Votre code ici !!\")" - ], - "metadata": { - "id": "JU_LNBUNlG4r" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "\n", - "## Exercice 3 : RdKit\n", - "\n", - "1.\tPour se familiariser avec Rdkit et le format MOL nous allons faire un parser de MOL.\n", - "Ecrire la fonction load_mol(fname: str) -> Chem.Mol qui prend un fichier mol en entrée et retourne la molécule associée au format Mol de RdKit.\n", - "Utilisez Chem.Mol, Chem.EditableMol, m.AddAtom, m.AddBond" - ], - "metadata": { - "id": "wcQSq6_Xly5B" - } - }, - { - "cell_type": "code", - "source": [ - "print(\"votre code ici !!\")" - ], - "metadata": { - "id": "566Svv_Ul6ob" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "\n", - "2.\tEcrire la fonction raw_formula(m: Chem.Mol) -> str qui retourne la formule brute de la molécule m.\n", - "Utilisez GetAtoms sur une molécule pour récupérer les listes des atomes et GetSymbol sur un atome pour récupérer son symbole." - ], - "metadata": { - "id": "4hQPPg09l8ca" - } - }, - { - "cell_type": "code", - "source": [ - "print(\"votre code ici !!\")" - ], - "metadata": { - "id": "Oj_ZEr5RmAVW" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "3.\tRécupérez les smiles et inchi de la molécule \"citrulline\" à partir des bases de données Rhea et pubchem. Puis :\n", - "\n", - "* Comparez les Smiles ;\n", - "* Chargez les molécules dans rdkit via « Chem.MolFromSmiles» et comparez-les ;\n", - "* Comparez les formules brutes généré par votre fonction précédente ;\n", - "* Comparez les smiles générés par « Chem.MolToSmiles » ;\n", - "* Testez la méthode « m.HasSubstructMatch(m2) »." - ], - "metadata": { - "id": "jHu1nW3-mB6f" - } - }, - { - "cell_type": "code", - "source": [ - "print(\"votre code ici !!\")" - ], - "metadata": { - "id": "A0Fi03eJmEHa" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "4.\tA quelle molécule correspond ce smiles :\n", - "\n", - "C[NH2+] [C@H] 1[C@H] (O) [C@@H] (O) [C@H] (CO) O[C@H] 1O[C@H] 1[C@@H] (O[C@@H] (C) [C@] 1(O) CO) O[C@H] 1[C@H] (O) [C@@H] (OP([O- ] ) ([O- ] ) =O) [C@H] (NC(N) =[NH2+] ) [C@@H] (O) [C@@H] 1NC(N) =[NH2+]" - ], - "metadata": { - "id": "-Q49JEHDmFxC" - } - }, - { - "cell_type": "markdown", - "source": [ - "votre réponse ici!" - ], - "metadata": { - "id": "BbdL_9JsmHCJ" - } - } - ] -} \ No newline at end of file + { + "cell_type": "markdown", + "metadata": { + "id": "x3gbtL4QjAil" + }, + "source": [ + "## BINF TP6 : bases de données métaboliques et rdkit\n", + "\n", + "Les bases de données métaboliques stockent des informations sur les composés et réaction chimiques présentes chez différents organismes ainsi que les enzymes associées. rdkit est une bibliothèque de manipulation de composés et réactions chimiques.\n", + "\n", + "Installons rdkit :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "N5fiDGAcmwW1" + }, + "outputs": [], + "source": [ + "!pip install rdkit" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qgWmNE_-mun5" + }, + "source": [ + "## Exercice 1 : Base de données Kegg et visualisation du cycle TCA\n", + "\n", + "[https://www.genome.jp/kegg/](https://www.genome.jp/kegg/)\n", + "\n", + "1. Utilisez le module «pathway » de la base de donnes Kegg pour visualiser le cycle de l’acide citrique. Appelé en anglais : TCA cycle, citric acid cycle ou encore Krebs cycle.\n", + "2. Combien de reactions contient-il ? On s'intéresse uniquement aux réactions du cycle contenant l'acide citrique." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xReGWi0G5Euo" + }, + "source": [ + "9" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fr0mAXml5Dlv" + }, + "source": [ + "3. Quels sont les identifiants EC (E.C numbers) associes à chacune de ces réactions." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zzZt_NEm5Jxu" + }, + "source": [ + "4.2.1.3\n", + "1.1.1.42\n", + "1.2.4.2\n", + "2.3.1.61\n", + "6.2.1.4\n", + "1.3.2.4\n", + "4.2.1.2\n", + "1.1.1.37\n", + "2.3.3.1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9Ccrjixj5LI5" + }, + "source": [ + "4. Pourquoi certains identifiants EC sont-ils en double ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "H1H4CqSc5OJw" + }, + "source": [ + "Votre réponse ici." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OSXnNhXJ5Q2r" + }, + "source": [ + "5. Qu’observez-vous de plus à propos de ces EC numbers ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jVgDoP7k5SnX" + }, + "source": [ + "Votre réponse ici." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9_YKyLxU5UCx" + }, + "source": [ + "Malheureusement la base de données KEGG ne peut pas être téléchargée gratuitement, nous allons donc changer de base de données." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Gpbi8aO6kRFl" + }, + "source": [ + "## Exercice 2 : Base de données Rhea et visualisation du cycle TCA\n", + "\n", + "[https://www.rhea-db.org/](https://www.rhea-db.org/)\n", + "\n", + "A L’inverse, la base de données Rhea est téléchargeable, mais elle ne fournit pas de visualisation des voies métaboliques. C’est pour ça que l’on a fait la partie précédente avec KEGG.\n", + "\n", + "\n", + "1. Trouvez les IDs Rhea associés aux EC numbers extraits dans l'exercice précédent. Faites attention à choisir des réactions unidirectionnelles. Si vous avez l’id d’une réaction bidirectionnelle, id+1 et id+2 devraient correspondre aux réactions décomposées dans chaque sens. Faites attention au sens de réaction." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HnDqzpRL5qgU" + }, + "source": [ + "4.2.1.3: RHEA:10337\n", + "1.1.1.42: RHEA:19630\n", + "1.2.4.2: RHEA:12189\n", + "2.3.1.61: RHEA:15215\n", + "6.2.1.4: RHEA:22122 \n", + "1.3.2.4: RHEA:77904\n", + "4.2.1.2: RHEA:12462\n", + "1.1.1.37: RHEA:21433 \n", + "2.3.3.1: RHEA:16846" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eanm0mpo5raX" + }, + "source": [ + "2. Téléchargez Rhea, choisissez le format « rhea-reaction-smiles.tsv ». Quel est ce format ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "FDpE8Bdq5z6M" + }, + "source": [ + "Tab separated columns" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "I8SnIgek50oA" + }, + "source": [ + "3. Chargez ce fichier via RdKit via \"rdChemReactions.ReactionFromSmarts\" du module rdkit.Chem" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "id": "guPceFEci_lI" + }, + "outputs": [], + "source": [ + "from rdkit import Chem\n", + "from rdkit.Chem import rdChemReactions\n", + "import pandas as pd\n", + "\n", + "a = pd.read_csv(\"rhea-reaction-smiles.tsv\", sep=\"\\t\",header=None)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qXWJXyzsk-AE" + }, + "source": [ + "4. Cherchez dans ces réactions celles associées au cycle TCA en vous basant sur l’ID Rhea." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "g0wWVKGwlDFF" + }, + "outputs": [], + "source": [ + "print(\"votre code ici !!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dnysSbI5lF_b" + }, + "source": [ + "5. Affichez les réactions du cycle TCA, vous pouvez utiliser la fonction display de « IPython.display » sur une réaction, vous devez aussi importer\n", + "\n", + "« from rdkit.Chem.Draw import IPythonConsole »" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "JU_LNBUNlG4r" + }, + "outputs": [], + "source": [ + "print(\"Votre code ici !!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wcQSq6_Xly5B" + }, + "source": [ + "\n", + "## Exercice 3 : RdKit\n", + "\n", + "1.\tPour se familiariser avec Rdkit et le format MOL nous allons faire un parser de MOL.\n", + "Ecrire la fonction load_mol(fname: str) -> Chem.Mol qui prend un fichier mol en entrée et retourne la molécule associée au format Mol de RdKit.\n", + "Utilisez Chem.Mol, Chem.EditableMol, m.AddAtom, m.AddBond" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "566Svv_Ul6ob" + }, + "outputs": [], + "source": [ + "print(\"votre code ici !!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4hQPPg09l8ca" + }, + "source": [ + "\n", + "2.\tEcrire la fonction raw_formula(m: Chem.Mol) -> str qui retourne la formule brute de la molécule m.\n", + "Utilisez GetAtoms sur une molécule pour récupérer les listes des atomes et GetSymbol sur un atome pour récupérer son symbole." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Oj_ZEr5RmAVW" + }, + "outputs": [], + "source": [ + "print(\"votre code ici !!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jHu1nW3-mB6f" + }, + "source": [ + "3.\tRécupérez les smiles et inchi de la molécule \"citrulline\" à partir des bases de données Rhea et pubchem. Puis :\n", + "\n", + "* Comparez les Smiles ;\n", + "* Chargez les molécules dans rdkit via « Chem.MolFromSmiles» et comparez-les ;\n", + "* Comparez les formules brutes généré par votre fonction précédente ;\n", + "* Comparez les smiles générés par « Chem.MolToSmiles » ;\n", + "* Testez la méthode « m.HasSubstructMatch(m2) »." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "A0Fi03eJmEHa" + }, + "outputs": [], + "source": [ + "print(\"votre code ici !!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-Q49JEHDmFxC" + }, + "source": [ + "4.\tA quelle molécule correspond ce smiles :\n", + "\n", + "C[NH2+] [C@H] 1[C@H] (O) [C@@H] (O) [C@H] (CO) O[C@H] 1O[C@H] 1[C@@H] (O[C@@H] (C) [C@] 1(O) CO) O[C@H] 1[C@H] (O) [C@@H] (OP([O- ] ) ([O- ] ) =O) [C@H] (NC(N) =[NH2+] ) [C@@H] (O) [C@@H] 1NC(N) =[NH2+]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BbdL_9JsmHCJ" + }, + "source": [ + "votre réponse ici!" + ] + } + ], + "metadata": { + "colab": { + "authorship_tag": "ABX9TyMlj7yAC/ydT3s7LpoX8Wj2", + "include_colab_link": true, + "provenance": [] + }, + "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.13.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}