diff --git a/BINF2025_TP2.ipynb b/BINF2025_TP2.ipynb index 9bac34d..87b97b7 100644 --- a/BINF2025_TP2.ipynb +++ b/BINF2025_TP2.ipynb @@ -1,669 +1,744 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [], - "authorship_tag": "ABX9TyMmR6Pk3vFncQjZkB8Uyx5K" - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "07j9b24NFRH0" + }, + "source": [ + "# Exercice 0 : échauffement" + ] }, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "# Exercice 0 : échauffement" - ], - "metadata": { - "id": "07j9b24NFRH0" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q1. Donnez, dans la direction 3’→ 5’, la séquence codée par le brin d'ADN suivant :" - ], - "metadata": { - "id": "OpgtuBpMFXCB" - } - }, - { - "cell_type": "markdown", - "source": [ - "![image.png](data:image/png;base64,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)" - ], - "metadata": { - "id": "y4xEAWaIGOSy" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "1p4vKlfIGRlg" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q2. Quelle est le peptide codé par la séquence d’ARNm suivante ?\n", - "\n", - "3’– AUAACCAAUAUGCAAGUACAUGCA – 5’\n" - ], - "metadata": { - "id": "MKl3S07sGUTO" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "yAViHozqGntO" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q3.\tDonnez toutes les séquences d'ARN (AUGC) possibles codant pour la séquence peptidique : TrpGluIleTyr." - ], - "metadata": { - "id": "8ZC5OWmTGeR6" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "LeiUM2UaGoiA" - } - }, - { - "cell_type": "markdown", - "source": [ - "# Exercice 1 : Annotation de cadres de lectures ouverts" - ], - "metadata": { - "id": "fXssuBsGGsnh" - } - }, - { - "cell_type": "markdown", - "source": [ - "Voici en cadeau le code génétique" - ], - "metadata": { - "id": "rFnI9UH_BXqB" - } - }, - { - "cell_type": "code", - "source": [ - "genecode = {\n", - " 'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M',\n", - " 'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T',\n", - " 'AAC':'N', 'AAT':'N', 'AAA':'K', 'AAG':'K',\n", - " 'AGC':'S', 'AGT':'S', 'AGA':'R', 'AGG':'R',\n", - " 'CTA':'L', 'CTC':'L', 'CTG':'L', 'CTT':'L',\n", - " 'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCT':'P',\n", - " 'CAC':'H', 'CAT':'H', 'CAA':'Q', 'CAG':'Q',\n", - " 'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGT':'R',\n", - " 'GTA':'V', 'GTC':'V', 'GTG':'V', 'GTT':'V',\n", - " 'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCT':'A',\n", - " 'GAC':'D', 'GAT':'D', 'GAA':'E', 'GAG':'E',\n", - " 'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGT':'G',\n", - " 'TCA':'S', 'TCC':'S', 'TCG':'S', 'TCT':'S',\n", - " 'TTC':'F', 'TTT':'F', 'TTA':'L', 'TTG':'L',\n", - " 'TAC':'Y', 'TAT':'Y', 'TAA':'_', 'TAG':'_',\n", - " 'TGC':'C', 'TGT':'C', 'TGA':'_', 'TGG':'W',\n", - "}\n" - ], - "metadata": { - "id": "PkcMeaNaBZcW" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Q1. Téléchargez à partir de\n", - "\n", - "https://www.ncbi.nlm.nih.gov/datasets/genome/\n", - "\n", - "la séquence complète du génome de l’Adeno Associated Virus 2 (AAV2, identifiant NC_001401.2), **au format FASTA**.\n", - "La séquence doit faire 4679 bp." - ], - "metadata": { - "id": "Y1AJY5QSGumX" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q2. Expliquez le format FASTA." - ], - "metadata": { - "id": "mGLNrDrZG4Ja" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "-T4UyqVHG8ze" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Cadres de lecture ouverts\n", - "L’annotation de séquences consiste à trouver les différents éléments présents dans une séquence (e.g. un génome), en particulier la position des différents gènes. Une manière grossière de trouver où sont les gènes est de trouver les cadres de lecture ouverts (Open Reading Frames ORFs) qui correspondent à toutes les sous-séquences entre un codon start et un codon STOP." - ], - "metadata": { - "id": "ZXdTN3laG_L-" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q1.\tRappelez la définition d’un codon." - ], - "metadata": { - "id": "-KT1u7S-HOOU" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "NaB0FjM2HRqj" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q2.\tQuels sont les codons START canoniques. Pour quel(s) acide(s) aminé(s) codent-ils ? En quoi sont-ils spéciaux ?" - ], - "metadata": { - "id": "VoGoPRssHT7D" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "pRGmlmBgHfL4" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q3.\tQuels sont les codons STOP canoniques. Pour quel(s) acide(s) aminé(s) codent-ils ? En quoi sont-ils spéciaux ?" - ], - "metadata": { - "id": "NBFod720HhKv" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "Mn_3j5eXHqDe" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q4. Dans quelle direction un brin d’ADN est-il lu ?" - ], - "metadata": { - "id": "y0VpLfSXHs9u" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "5TQWOZPlHx7v" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q5. Comment se structure la molécule d'ADN dans une cellule ?" - ], - "metadata": { - "id": "8No_ihg9HzCT" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "QVLrCAcFH449" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q6. Quel(s) brin(s) de la molécule d'ADN peut (peuvent) porter un gène ?" - ], - "metadata": { - "id": "0I-DgmyqH5no" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "ormmQ7P2IE1Q" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q7. Qu’est-ce que le cadre de lecture ? Combien en existe-t-il ?" - ], - "metadata": { - "id": "QQMAhm7aIFib" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "SC_iLH7zIMdB" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q8. Quand utilise-t-on un cadre de lecture pour interpréter une séquence d’ADN ?" - ], - "metadata": { - "id": "5lwt-v5WIOFL" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "-EjaKRP7ITXa" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q9.\tDonnez l’ensemble des ORFs présents dans le génome de l’AAV2. Présentez vos résultats au format FASTA où pour chaque ORF vous fournissez les informations :\n", - "```MARKDOWN\n", - "> pos début, pos fin, brin\n", - "séquence\n", - "```\n", - "où \"pos début\" est la position du premier nucléotide du codon START et \"pos fin\" est la position du dernier nucléotide du codon STOP (les positions sont comptées depuis le début du brin), brin est l'orientation du brin + ou - (+ est la séquence de base; - est le brin complément inverse) et séquence est simplement la séquence." - ], - "metadata": { - "id": "0u9Bt0aiIUve" - } - }, - { - "cell_type": "code", - "source": [ - "#Votre code ici" - ], - "metadata": { - "id": "ElABoS6DKDDV" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Q10.\tCombien d’ORFS trouvez-vous ?" - ], - "metadata": { - "id": "q86LQGB1KESw" - } - }, - { - "cell_type": "code", - "source": [ - "#Votre code ici" - ], - "metadata": { - "id": "NbjKaaugKL7x" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Q11. Affichez les ORFs le long du génome sous forme d'un graphe (en x les positions le long du génome, en y \"l'id\" de l'ORF) où chaque ORF est représentée per une ligne horizontale entre les positions de départ de de fin et une valeur y par ORF." - ], - "metadata": { - "id": "1v2m9XqLM3mq" - } - }, - { - "cell_type": "code", - "source": [ - "#Votre code ici" - ], - "metadata": { - "id": "hzmPRIAsNf3i" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Q12. En considérant que les différentes la probabilité d’apparition d’un nucléotide à chaque position le long d’un génome sont indépendantes, quelle est la probabilité d’apparition d’un codon START en fonction de la probabilité d’apparition des différents nucléotides $p_A,p_T,p_G,p_C$ ?" - ], - "metadata": { - "id": "YA8TCiSLL4dg" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "RpcAC1yUL4Qz" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q13. Avec le même modèle, quelle est la probabilité d'apparition d'un codon STOP ?" - ], - "metadata": { - "id": "JLFPe6kXMSNx" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "7eT9_wk2MYtL" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q14. Affichez les probabilités d'apparition des codons START et STOP le long du génome de l’AAV2. Pour chaque position vous utilisez une fenêtre glissante de 501 nucléotide centrée sur cette position pour calculer la fréquence d’apparition des différents nucléotides (vous pouvez négliger les 501 premièrs et dernières nucléotides)." - ], - "metadata": { - "id": "4VXDfaIzMaqj" - } - }, - { - "cell_type": "code", - "source": [ - "#Votre code ici" - ], - "metadata": { - "id": "5XAZWIyeMwy6" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Q15.\tTéléchargez l’annotation du génome à partir de Genbank :\n", - "\n", - "https://www.ncbi.nlm.nih.gov/datasets/gene/GCF_000838645.1/\n", - "\n", - "Comparez les ORFS que vous avez trouvé avec le génome annoté (on s’intéresse à l’annotation « gene »)." - ], - "metadata": { - "id": "Avd45nmYNsDM" - } - }, - { - "cell_type": "code", - "source": [ - "#Votre code ici" - ], - "metadata": { - "id": "fT3DjiSANvW-" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Q16. Qu’observez-vous ?" - ], - "metadata": { - "id": "35h8oWXPNwWK" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "-lEVw8fwNx-r" - } - }, - { - "cell_type": "markdown", - "source": [ - "# Exercice 2 : biais d’utilisation des codons" - ], - "metadata": { - "id": "va2YiUmrYGh_" - } - }, - { - "cell_type": "markdown", - "source": [ - "Le code génétique étant redondant, plusieurs codons codent pour un même acide aminé. A l’inverse, cela veut dire que pour stocker un même acide aminé dans le génome, un organisme a différentes possibilités. Dans cet exercice, on va étudier si différents organismes ont des préférences différentes pour coder différents acides aminés ?" - ], - "metadata": { - "id": "2oktNdxUYMU5" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q1. Récupperez les génomes des organismes suivants à partir de Genbank:\n", - "1.\tAAV2 - NC_001401.2\n", - "2.\tPlasmodium Falciparum 3D7 Chromosome 9 – AL844508\n", - "3.\tEscherichia coli souche BL21 - NZ_CP053601\n", - "4.\tHomo Sapiens Chromosome 10 build GRCh38.p14 - NC_000010.11" - ], - "metadata": { - "id": "prN6_LD6Ybx1" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q2. Calculez la fréquence d’apparition de chaque codon présents dans chacun de ces génomes." - ], - "metadata": { - "id": "f2vLLmPMYnTa" - } - }, - { - "cell_type": "code", - "source": [ - "#Votre code ici" - ], - "metadata": { - "id": "xkTKLGt6YwOC" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Q3. Affichez les résultats sous forme de heatmap avec en axe x les acides aminés et en axe y les codons. Chaque case représente en niveau de couleur la fréquence d'apparition d'un codon pour un acide aminé." - ], - "metadata": { - "id": "IFaeC3eKYxvT" - } - }, - { - "cell_type": "code", - "source": [ - "#Votre code ici" - ], - "metadata": { - "id": "p9hfFfMjZJAa" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Q4. Ces heatmaps sont-elles similaires ?" - ], - "metadata": { - "id": "-7KUyH9sZKUV" - } - }, - { - "cell_type": "markdown", - "source": [ - "```markdown\n", - "Votre réponse ici\n", - "```" - ], - "metadata": { - "id": "0l9DWWVDZRwE" - } - }, - { - "cell_type": "markdown", - "source": [ - "# Exercice 3 : optimisation de codons" - ], - "metadata": { - "id": "xIRck-A9ZWfl" - } - }, - { - "cell_type": "markdown", - "source": [ - "L’exercice précédent nous a montré qu’il existait bien un biais dans l’utilisation des codons synonymes entre différents organismes. En pratique, si une séquence d’ADN d’un organisme ne suit pas son biais d'utilisation de codons, cela peut avoir un impact sur sa vitesse de traduction et donc la quantité de protéines associées.\n", - "\n", - "Si on souhaite introduire dans un organisme un gène provenant d’un autre organisme il est donc préférable d’optimiser la séquence selon les biais de codons de l’organisme cible." - ], - "metadata": { - "id": "ihkvlINMZbYT" - } - }, - { - "cell_type": "markdown", - "source": [ - "Q1. Créer un code qui prend en entrée une séquence d’ADN codante et une table de fréquence d’utilisation des codons pour un organisme et retourne la séquence produisant la même protéine mais utilisant uniquement les codons les plus fréquemment utilisés selon la table donnée." - ], - "metadata": { - "id": "srJiq4WLZvVG" - } - }, - { - "cell_type": "code", - "source": [ - "#Votre code ici" - ], - "metadata": { - "id": "wK31E_apZ-eH" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Q2. On va combiner les deux derniers exercices: écrivez un code qui prend en entrée un id de génome et une séquence à optimiser. Votre code télécharge le génome, calcule la table de biais de codons et optimise la séquence d'entrée pour cette table." - ], - "metadata": { - "id": "36YVYcfZaCK_" - } - }, - { - "cell_type": "code", - "source": [ - " #Votre code ici" - ], - "metadata": { - "id": "R8LcMTBIaUEu" - }, - "execution_count": null, - "outputs": [] + { + "cell_type": "markdown", + "metadata": { + "id": "OpgtuBpMFXCB" + }, + "source": [ + "Q1. Donnez, dans la direction 3’→ 5’, la séquence codée par le brin d'ADN suivant :" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y4xEAWaIGOSy" + }, + "source": [ + "![image.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1p4vKlfIGRlg" + }, + "source": [ + "```markdown\n", + "GTTACG\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MKl3S07sGUTO" + }, + "source": [ + "Q2. Quelle est le peptide codé par la séquence d’ARNm suivante ?\n", + "\n", + "3’– AUAACCAAUAUGCAAGUACAUGCA – 5’\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yAViHozqGntO" + }, + "source": [ + "```markdown\n", + "Thr Tyr Met(start) Asn Val Stop Pro Ile\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8ZC5OWmTGeR6" + }, + "source": [ + "Q3.\tDonnez toutes les séquences d'ARN (AUGC) possibles codant pour la séquence peptidique : TrpGluIleTyr." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LeiUM2UaGoiA" + }, + "source": [ + "```markdown\n", + "TrpGluIleTyr\n", + "3' - 5'\n", + "UAUUUAGAGGGU\n", + "UAUCUAGAGGGU\n", + "UAUAUAGAGGGU\n", + "UAUUUAAAGGGU\n", + "UAUCUAAAGGGU\n", + "UAUAUAAAGGGU\n", + "CAUUUAGAGGGU\n", + "CAUCUAGAGGGU\n", + "CAUAUAGAGGGU\n", + "CAUUUAAAGGGU\n", + "CAUCUAAAGGGU\n", + "CAUAUAAAGGGU\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fXssuBsGGsnh" + }, + "source": [ + "# Exercice 1 : Annotation de cadres de lectures ouverts" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rFnI9UH_BXqB" + }, + "source": [ + "Voici en cadeau le code génétique" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "PkcMeaNaBZcW" + }, + "outputs": [], + "source": [ + "genecode = {\n", + " 'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M',\n", + " 'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T',\n", + " 'AAC':'N', 'AAT':'N', 'AAA':'K', 'AAG':'K',\n", + " 'AGC':'S', 'AGT':'S', 'AGA':'R', 'AGG':'R',\n", + " 'CTA':'L', 'CTC':'L', 'CTG':'L', 'CTT':'L',\n", + " 'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCT':'P',\n", + " 'CAC':'H', 'CAT':'H', 'CAA':'Q', 'CAG':'Q',\n", + " 'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGT':'R',\n", + " 'GTA':'V', 'GTC':'V', 'GTG':'V', 'GTT':'V',\n", + " 'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCT':'A',\n", + " 'GAC':'D', 'GAT':'D', 'GAA':'E', 'GAG':'E',\n", + " 'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGT':'G',\n", + " 'TCA':'S', 'TCC':'S', 'TCG':'S', 'TCT':'S',\n", + " 'TTC':'F', 'TTT':'F', 'TTA':'L', 'TTG':'L',\n", + " 'TAC':'Y', 'TAT':'Y', 'TAA':'_', 'TAG':'_',\n", + " 'TGC':'C', 'TGT':'C', 'TGA':'_', 'TGG':'W',\n", + "}\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Y1AJY5QSGumX" + }, + "source": [ + "Q1. Téléchargez à partir de\n", + "\n", + "https://www.ncbi.nlm.nih.gov/datasets/genome/\n", + "\n", + "la séquence complète du génome de l’Adeno Associated Virus 2 (AAV2, identifiant NC_001401.2), **au format FASTA**.\n", + "La séquence doit faire 4679 bp." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "mGLNrDrZG4Ja" + }, + "source": [ + "Q2. Expliquez le format FASTA." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-T4UyqVHG8ze" + }, + "source": [ + "```markdown\n", + "Le format FASTA est un fichier texte qui permet de stocker des séquences de génome.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZXdTN3laG_L-" + }, + "source": [ + "## Cadres de lecture ouverts\n", + "L’annotation de séquences consiste à trouver les différents éléments présents dans une séquence (e.g. un génome), en particulier la position des différents gènes. Une manière grossière de trouver où sont les gènes est de trouver les cadres de lecture ouverts (Open Reading Frames ORFs) qui correspondent à toutes les sous-séquences entre un codon start et un codon STOP." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-KT1u7S-HOOU" + }, + "source": [ + "Q1.\tRappelez la définition d’un codon." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NaB0FjM2HRqj" + }, + "source": [ + "```markdown\n", + "Un codon est un groupe de 3 nucléides qui permettent d'encoder les acides aminés.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VoGoPRssHT7D" + }, + "source": [ + "Q2.\tQuels sont les codons START canoniques. Pour quel(s) acide(s) aminé(s) codent-ils ? En quoi sont-ils spéciaux ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pRGmlmBgHfL4" + }, + "source": [ + "```markdown\n", + "Le codon START canonique est le codon AUG. Il code pour la Méthionine. Ils servent à indiquer le départ de la traduction.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NBFod720HhKv" + }, + "source": [ + "Q3.\tQuels sont les codons STOP canoniques. Pour quel(s) acide(s) aminé(s) codent-ils ? En quoi sont-ils spéciaux ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Mn_3j5eXHqDe" + }, + "source": [ + "```markdown\n", + "Les codons STOP canoniques sont UAA, UAG et UGA. Ils n'ont pas d'association donc ils ne codent pour aucun acide aminé. Ils indiquent la fin de la traduction.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y0VpLfSXHs9u" + }, + "source": [ + "Q4. Dans quelle direction un brin d’ADN est-il lu ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5TQWOZPlHx7v" + }, + "source": [ + "```markdown\n", + "3' -> 5'\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8No_ihg9HzCT" + }, + "source": [ + "Q5. Comment se structure la molécule d'ADN dans une cellule ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QVLrCAcFH449" + }, + "source": [ + "```markdown\n", + "La molécule d'ADN a une structure en double brin. Elle a une forme d'hélice. \"L'extérieur\" de l'hélice est composé des bases et l'intérieur est composé des squelettes sucre-phosphate.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0I-DgmyqH5no" + }, + "source": [ + "Q6. Quel(s) brin(s) de la molécule d'ADN peut (peuvent) porter un gène ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ormmQ7P2IE1Q" + }, + "source": [ + "```markdown\n", + "Tous\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QQMAhm7aIFib" + }, + "source": [ + "Q7. Qu’est-ce que le cadre de lecture ? Combien en existe-t-il ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SC_iLH7zIMdB" + }, + "source": [ + "```markdown\n", + "Le cadre de lecture est une manière de lire une séquence d'ADN/ARN. Il en existe 3 : le cadre de lecture ouvert (utilisé quand une séquence contient un codon START et un codon STOP), cadre de lecture superposé, cadre de lecture décalé. \n", + "\n", + "Correction : endroit où on va trouver codon START dans séquence d'ADN/ARN. Aussi cadre de lecture +1 (décalé d'1 codon), et +2. Il en existe donc 3 + 3 dans le sens inverse, donc 6. \n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5lwt-v5WIOFL" + }, + "source": [ + "Q8. Quand utilise-t-on un cadre de lecture pour interpréter une séquence d’ADN ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-EjaKRP7ITXa" + }, + "source": [ + "```markdown\n", + "On utilise un cadre de lecture quand on tombe sur un codon start dans une séquence ADN.\n", + "\n", + "Correction : quand on est sûr qu'on est dans une séquence codante.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0u9Bt0aiIUve" + }, + "source": [ + "Q9.\tDonnez l’ensemble des ORFs présents dans le génome de l’AAV2. Présentez vos résultats au format FASTA où pour chaque ORF vous fournissez les informations :\n", + "```MARKDOWN\n", + "> pos début, pos fin, brin\n", + "séquence\n", + "```\n", + "où \"pos début\" est la position du premier nucléotide du codon START et \"pos fin\" est la position du dernier nucléotide du codon STOP (les positions sont comptées depuis le début du brin), brin est l'orientation du brin + ou - (+ est la séquence de base; - est le brin complément inverse) et séquence est simplement la séquence." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "ElABoS6DKDDV" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "119" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" } - ] -} \ No newline at end of file + ], + "source": [ + "#Votre code ici\n", + "file = open(\"NC_001401.2.fna\")\n", + "content = file.read()\n", + "contentLines = content.split(\"\\n\")\n", + "contentLines.pop(0)\n", + "\n", + "sequence = \"\"\n", + "for l in contentLines:\n", + " sequence += l\n", + "\n", + "translatedSeq = \"\"\n", + "\n", + "for x in sequence:\n", + " match x:\n", + " case 'T':\n", + " translatedSeq += 'A'\n", + " case 'A':\n", + " translatedSeq += 'U'\n", + " case 'C':\n", + " translatedSeq += 'G'\n", + " case 'G':\n", + " translatedSeq += 'C'\n", + "\n", + "cptORF = 0\n", + "\n", + "def countORFs(seq):\n", + " cptORF = 0\n", + " for i in range(len(seq) - 1):\n", + " if seq[i] == 'A':\n", + " if seq[i+1] == 'U' and seq[i+2] == 'G':\n", + " cptORF += 1\n", + " i += 3\n", + " return cptORF\n", + "\n", + "sens = countORFs(translatedSeq)\n", + "sens2 = countORFs(translatedSeq[::-1])\n", + "\n", + "sens + sens2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "q86LQGB1KESw" + }, + "source": [ + "Q10.\tCombien d’ORFS trouvez-vous ?" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "NbjKaaugKL7x" + }, + "outputs": [], + "source": [ + "#Votre code ici" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1v2m9XqLM3mq" + }, + "source": [ + "Q11. Affichez les ORFs le long du génome sous forme d'un graphe (en x les positions le long du génome, en y \"l'id\" de l'ORF) où chaque ORF est représentée per une ligne horizontale entre les positions de départ de de fin et une valeur y par ORF." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "hzmPRIAsNf3i" + }, + "outputs": [], + "source": [ + "#Votre code ici" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YA8TCiSLL4dg" + }, + "source": [ + "Q12. En considérant que les différentes la probabilité d’apparition d’un nucléotide à chaque position le long d’un génome sont indépendantes, quelle est la probabilité d’apparition d’un codon START en fonction de la probabilité d’apparition des différents nucléotides $p_A,p_T,p_G,p_C$ ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RpcAC1yUL4Qz" + }, + "source": [ + "```markdown\n", + "Votre réponse ici\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JLFPe6kXMSNx" + }, + "source": [ + "Q13. Avec le même modèle, quelle est la probabilité d'apparition d'un codon STOP ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7eT9_wk2MYtL" + }, + "source": [ + "```markdown\n", + "Votre réponse ici\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4VXDfaIzMaqj" + }, + "source": [ + "Q14. Affichez les probabilités d'apparition des codons START et STOP le long du génome de l’AAV2. Pour chaque position vous utilisez une fenêtre glissante de 501 nucléotide centrée sur cette position pour calculer la fréquence d’apparition des différents nucléotides (vous pouvez négliger les 501 premièrs et dernières nucléotides)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "5XAZWIyeMwy6" + }, + "outputs": [], + "source": [ + "#Votre code ici" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Avd45nmYNsDM" + }, + "source": [ + "Q15.\tTéléchargez l’annotation du génome à partir de Genbank :\n", + "\n", + "https://www.ncbi.nlm.nih.gov/datasets/gene/GCF_000838645.1/\n", + "\n", + "Comparez les ORFS que vous avez trouvé avec le génome annoté (on s’intéresse à l’annotation « gene »)." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "fT3DjiSANvW-" + }, + "outputs": [], + "source": [ + "#Votre code ici" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "35h8oWXPNwWK" + }, + "source": [ + "Q16. Qu’observez-vous ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-lEVw8fwNx-r" + }, + "source": [ + "```markdown\n", + "Votre réponse ici\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "va2YiUmrYGh_" + }, + "source": [ + "# Exercice 2 : biais d’utilisation des codons" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2oktNdxUYMU5" + }, + "source": [ + "Le code génétique étant redondant, plusieurs codons codent pour un même acide aminé. A l’inverse, cela veut dire que pour stocker un même acide aminé dans le génome, un organisme a différentes possibilités. Dans cet exercice, on va étudier si différents organismes ont des préférences différentes pour coder différents acides aminés ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "prN6_LD6Ybx1" + }, + "source": [ + "Q1. Récupperez les génomes des organismes suivants à partir de Genbank:\n", + "1.\tAAV2 - NC_001401.2\n", + "2.\tPlasmodium Falciparum 3D7 Chromosome 9 – AL844508\n", + "3.\tEscherichia coli souche BL21 - NZ_CP053601\n", + "4.\tHomo Sapiens Chromosome 10 build GRCh38.p14 - NC_000010.11" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f2vLLmPMYnTa" + }, + "source": [ + "Q2. Calculez la fréquence d’apparition de chaque codon présents dans chacun de ces génomes." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "xkTKLGt6YwOC" + }, + "outputs": [], + "source": [ + "#Votre code ici" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IFaeC3eKYxvT" + }, + "source": [ + "Q3. Affichez les résultats sous forme de heatmap avec en axe x les acides aminés et en axe y les codons. Chaque case représente en niveau de couleur la fréquence d'apparition d'un codon pour un acide aminé." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "p9hfFfMjZJAa" + }, + "outputs": [], + "source": [ + "#Votre code ici" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-7KUyH9sZKUV" + }, + "source": [ + "Q4. Ces heatmaps sont-elles similaires ?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0l9DWWVDZRwE" + }, + "source": [ + "```markdown\n", + "Votre réponse ici\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xIRck-A9ZWfl" + }, + "source": [ + "# Exercice 3 : optimisation de codons" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ihkvlINMZbYT" + }, + "source": [ + "L’exercice précédent nous a montré qu’il existait bien un biais dans l’utilisation des codons synonymes entre différents organismes. En pratique, si une séquence d’ADN d’un organisme ne suit pas son biais d'utilisation de codons, cela peut avoir un impact sur sa vitesse de traduction et donc la quantité de protéines associées.\n", + "\n", + "Si on souhaite introduire dans un organisme un gène provenant d’un autre organisme il est donc préférable d’optimiser la séquence selon les biais de codons de l’organisme cible." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "srJiq4WLZvVG" + }, + "source": [ + "Q1. Créer un code qui prend en entrée une séquence d’ADN codante et une table de fréquence d’utilisation des codons pour un organisme et retourne la séquence produisant la même protéine mais utilisant uniquement les codons les plus fréquemment utilisés selon la table donnée." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "wK31E_apZ-eH" + }, + "outputs": [], + "source": [ + "#Votre code ici" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "36YVYcfZaCK_" + }, + "source": [ + "Q2. On va combiner les deux derniers exercices: écrivez un code qui prend en entrée un id de génome et une séquence à optimiser. Votre code télécharge le génome, calcule la table de biais de codons et optimise la séquence d'entrée pour cette table." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "R8LcMTBIaUEu" + }, + "outputs": [], + "source": [ + " #Votre code ici" + ] + } + ], + "metadata": { + "colab": { + "authorship_tag": "ABX9TyMmR6Pk3vFncQjZkB8Uyx5K", + "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.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}