18/02/2022 06:59 22. Mini-projets - Cours de Python https://python.sdv.univ-par
18/02/2022 06:59 22. Mini-projets - Cours de Python https://python.sdv.univ-paris-diderot.fr/22_mini_projets/ 1/24 22 Mini-projets Dans ce chapitre, nous vous proposons quelques scénarios pour développer vos compétences en Python et mettre en œuvre les concepts que vous avez rencontrés dans les chapitres précédents. 22.1 Description des projets 22.1.1 Mots anglais dans le protéome humain L 'objectif de ce premier projet est de découvrir si des mots anglais peuvent se retrouver dans les séquences du protéome humain, c'est-à-dire dans les séquences de l'ensemble des protéines humaines. Vous aurez à votre disposition : Le fichier english-common-words.txt , qui contient les 3000 mots anglais les plus fréquents, à raison d'1 mot par ligne. Le fichier human-proteome.fasta qui contient le protéome humain sous la forme de séquences au format FASTA. Attention, ce fichier est assez gros. Ce fichier provient de la banque de données UniProt à partir de cette page. Conseil : vous trouverez des explications sur le format FASTA et des exemples de code dans l'annexe A Quelques formats de données rencontrés en biologie. 22.1.2 Genbank2fasta Ce projet consiste à écrire un convertisseur de fichier, du format GenBank au format FASTA. Pour cela, nous allons utiliser le fichier GenBank du chromosome I de la levure de boulanger Saccharomyces cerevisiae. Vous pouvez télécharger ce fichier : soit via le lien sur le site du cours NC_001133.gbk ; soit directement sur la page de Saccharomyces cerevisiae S288c chromosome I, complete sequence sur le site du NCBI, puis en cliquant sur Send to, puis Complete Record, puis Choose Destination: File, puis Format: GenBank (full) et enfin sur le bouton Create File. Vous trouverez des explications sur les formats FASTA et GenBank ainsi que des exemples de code dans l'annexe A Quelques formats de données rencontrés en biologie. 18/02/2022 06:59 22. Mini-projets - Cours de Python https://python.sdv.univ-paris-diderot.fr/22_mini_projets/ 2/24 Vous pouvez réaliser ce projet sans ou avec des expressions régulières (abordées dans le chapitre 15). 22.1.3 Simulation d'un pendule On se propose de réaliser une simulation d'un pendule simple en Tkinter. Un pendule simple est représenté par une masse ponctuelle (la boule du pendule) reliée à un pivot immobile par une tige rigide et sans masse. On néglige les effets de frottement et on considère le champ gravitationnel comme uniforme. Le mouvement du pendule sera calculé en résolvant numériquement l'équation différentielle suivante : où représente l'angle entre la verticale et la tige du pendule, l'accélération angulaire, la gravité, et la longueur de la tige (note : pour la dérivation d'une telle équation vous pouvez consulter la page wikipedia ou l'accompagnement pas à pas, cf. la rubrique suivante). Pour trouver la valeur de en fonction du temps, on pourra utiliser la méthode semi-implicite d'Euler de résolution d'équation différentielle. La formule ci-dessus donne l'accélération angulaire au temps t : . À partir de celle-ci, la méthode propose le calcul de la vitesse angulaire au pas suivant : (où représente le pas de temps entre deux étapes successives de la simulation). Enfin, cette vitesse donne l'angle au pas suivant : . On prendra un pas de temps = 0.05 s, une accélération gravitationnelle = 9.8 m.s et une longueur de tige de = 1 m. Figure 1. Application pendule. Pour la visualisation, vous pourrez utiliser le widget canvas du module Tkinter (voir le chapitre 20 Fenêtres graphiques et Tkinter, rubrique Un canvas animé dans une classe). On cherche à aθ(t) = (t) = − ∗sin(θ(t)) d2θ dt2 g l θ aθ g l θ aθ(t) = − × sin(θ(t)) g l vθ(t + δt) = vθ(t) + aθ(t) × δt δt vθ(t + δt) θ θ(t + δt) = θ(t) + vθ(t + δt) × δt δt g −2 l 18/02/2022 06:59 22. Mini-projets - Cours de Python https://python.sdv.univ-paris-diderot.fr/22_mini_projets/ 3/24 obtenir un résultat comme montré dans la figure 1. Nous vous conseillons de procéder d'abord à la mise en place du simulateur physique (c'est-à- dire obtenir en fonction du temps ou du pas de simulation). Faites par exemple un premier script Python qui produit un fichier à deux colonnes (temps et valeur de ). Une fois que cela fonctionne bien, il vous faudra construire l'interface Tkinter et l'animer. Vous pouvez ajouter un bouton pour démarrer / stopper le pendule et une règle pour modifier sa position initiale. N'oubliez pas, il faudra mettre dans votre programme final une fonction qui convertit l'angle en coordonnées cartésiennes et dans le plan du canvas. Faites également attention au système de coordonnées du canvas où les ordonnées sont inversées par rapport à un repère mathématique. Pour ces deux aspects, reportez-vous à l'exercice Polygone de Sierpinski du chapitre 20 Fenêtres graphiques et Tkinter. 22.2 Accompagnement pas à pas Vous trouverez ci-après les différentes étapes pour réaliser les mini-projets proposés. Prenez le temps de bien comprendre une étape avant de passer à la suivante. 22.2.1 Mots anglais dans le protéome humain L 'objectif de ce premier projet est de découvrir si des mots anglais peuvent se retrouver dans les séquences du protéome humain, c'est-à-dire dans les séquences de l'ensemble des protéines humaines. Composition aminée Dans un premier temps, composez 5 mots anglais avec les 20 acides aminés. Des mots Téléchargez le fichier english-common-words.txt. Ce fichier contient les 3000 mots anglais les plus fréquents, à raison d'1 mot par ligne. Créez un script words_in_proteome.py et écrivez la fonction read_words() qui va lire les mots contenus dans le fichier dont le nom est fourni en argument du script et renvoyer une liste contenant les mots convertis en majuscule et composés de 3 caractères ou plus. Dans le programme principal, affichez le nombre de mots sélectionnés. Des protéines Téléchargez maintenant le fichier human-proteome.fasta. Attention, ce fichier est assez gros. Ce fichier provient de la banque de données UniProt à partir de cette page. Voici les premières lignes de ce fichier ( [...] indique une coupure que nous avons faite) : θ θ θ x y 18/02/2022 06:59 22. Mini-projets - Cours de Python https://python.sdv.univ-paris-diderot.fr/22_mini_projets/ 4/24 Toujours dans le script words_in_proteome.py , écrivez la fonction read_sequences() qui va lire le protéome dans le fichier dont le nom est fourni en second argument du script. Cette fonction va renvoyer un dictionnaire dont les clefs sont les identifiants des protéines (par exemple, O95139 , O75438 , Q8N4C6 ) et dont les valeurs associées sont les séquences. Dans le programme principal, affichez le nombre de séquences lues. À des fins de test, affichez également la séquence associée à la protéine O95139 . À la pêche aux mots Écrivez maintenant la fonction search_words_in_proteome() qui prend en argument la liste de mots et le dictionnaire contenant les séquences des protéines et qui va compter le nombre de séquences dans lesquelles un mot est présent. Cette fonction renverra un dictionnaire dont les clefs sont les mots et les valeurs le nombre de séquences qui contiennent ces mots. La fonction affichera également le message suivant pour les mots trouvés dans le protéome : Cette étape prend quelques minutes. Soyez patient. Et le mot le plus fréquent est... Pour terminer, écrivez maintenant la fonction find_most_frequent_word() qui prend en argument le dictionnaire renvoyé par la précédente fonction search_words_in_proteome() et qui affiche le mot trouvé dans le plus de protéines, ainsi que le nombre de séquences dans lesquelles il a été trouvé, sous la forme : Quel est ce mot ? Quel pourcentage des séquences du protéome contiennent ce mot ? Pour être plus complet 1 2 3 4 5 6 7 8 9 10 >sp|O95139|NDUB6_HUMAN NADH dehydrogenase [ubiquinone] 1 beta [...] MTGYTPDEKLRLQQLRELRRRWLKDQELSPREPVLPPQKMGPMEKFWNKFLENKSPWRKM VHGVYKKSIFVFTHVLVPVWIIHYYMKYHVSEKPYGIVEKKSRIFPGDTILETGEVIPPM KEFPDQHH >sp|O75438|NDUB1_HUMAN NADH dehydrogenase [ubiquinone] 1 beta [...] MVNLLQIVRDHWVHVLVPMGFVIGCYLDRKSDERLTAFRNKSMLFKRELQPSEEVTWK >sp|Q8N4C6|NIN_HUMAN Ninein OS=Homo sapiens OX=9606 GN=NIN PE=1 SV=4 MDEVEQDQHEARLKELFDSFDTTGTGSLGQEELTDLCHMLSLEEVAPVLQQTLLQDNLLG RVHFDQFKEALILILSRTLSNEEHFQEPDCSLEAQPKYVRGGKRYGRRSLPEFQESVEEF PEVTVIEPLDEEARPSHIPAGDCSEHWKTQRSEEYEAEGQLRFWNPDDLNASQSGSSPPQ 1 2 3 4 ACCESS found in 1 sequences ACID found in 38 sequences ACT found in 805 sequences [...] 1 => xxx found in yyy sequences 18/02/2022 06:59 22. Mini-projets - Cours de Python https://python.sdv.univ-paris-diderot.fr/22_mini_projets/ 5/24 Jusqu'à présent, nous avions déterminé, pour chaque mot, le nombre de séquences dans lesquelles il apparaissait. Nous pourrions aller plus loin et calculer aussi le nombre de fois que chaque mot apparaît dans les séquences. Pour cela modifier la fonction search_words_in_proteome() de façon à compter le nombre d’occurrences d'un mot dans les séquences. La méthode .count() vous sera utile. Déterminez alors quel mot est le plus fréquent dans le protéome humain. 22.2.2 genbank2fasta (sans expression régulière) Ce projet consiste à écrire un convertisseur de fichier, du format GenBank au format FASTA. L 'annexe A Quelques formats de données rencontrés en biologie rappelle les caractéristiques de ces deux formats de fichiers. Le jeu de données avec lequel nous allons travailler est le fichier GenBank du chromosome I de la levure du boulanger Saccharomyces cerevisiae. Les indications pour le télécharger sont indiqués dans la description du projet. Dans cette rubrique, nous allons réaliser ce projet sans expression régulière. Lecture du fichier Créez un script genbank2fasta.py et créez la fonction lit_fichier() qui prend en argument le nom du fichier et qui renvoie le contenu du fichier sous forme d'une liste de lignes, chaque ligne étant elle-même une chaîne de caractères. Testez cette fonction avec le fichier GenBank uploads/Ingenierie_Lourd/ mini-projets-cours-de-python.pdf
Documents similaires
-
53
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 10, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 1.0116MB