• Aucun résultat trouvé

Sauvegardez votre historique de commandes

Dans le document Cours d’introduction à Python avec Rurple (Page 163-167)

etc.

Enfin, on peut aussi être très précis dans le message d’erreur. Observez la fonction download_page() qui, avec le moduleurllib, télécharge un fichier sur internet.

 1 import urllib.request 2 3 def download_page(address): 4 error = "" 5 page = "" 6 try: 7 data = urllib.request.urlopen(address) 8 page = data.read() 9 except IOError as e: 10 if hasattr(e, 'reason'):

11 error = "Cannot reach web server: " + str(e.reason) 12 if hasattr(e, 'code'):

13 error = "Server failed {:d}".format(e.code) 14 return page, error

15

16 data, error = download_page("https://files.rcsb.org/download/1BTA.pdb") 17

18 if error:

19 print("Erreur rencontrée : {}".format(error)) 20 else:

21 with open("proteine.pdb", "w") as prot: 22 prot.write(data.decode('utf-8')) 23 print("Protéine enregistrée")

 

La variable e est une instance (un représentant) de l’erreur de type IOError. Certains de ces attributs sont testés avec la fonctionhasattr() pour ainsi affiner le message renvoyé (ici contenu dans la variable error).

Si tout se passe bien, la page est téléchargée et stockée dans la variable data, puis ensuite enregistrée sur le disque.

20.5

Sauvegardez votre historique de commandes

Vous pouvez sauvegarder l’historique des commandes utilisées dans l’interpréteur Python avec le module readline.  1 >>> print("hello") 2 hello 3 >>> a = 22 4 >>> a = a + 11 5 >>> print(a) 6 33 7 >>> import readline 8 >>> readline.write_history_file()  

Quittez Python. L’historique de toutes vos commandes est dans votre répertoire personnel, dans le fichier .history.

Relancez l’interpréteur Python.

Chapitre 20. Pour aller plus loin 20.5. Sauvegardez votre historique de commandes



1 >>> import readline

2 >>> readline.read_history_file()

 

Vous pouvez accéder aux commandes de la session précédente avec la flèche du haut de votre clavier. D’abord les commandesreadline.read_history_file() et import readline de la session actuelle, puis print(a), a = a + 11, a = 22. . .

Chapitre 21

Mini-projets

Dans ce chapitre, nous vous proposons quelques scénarios pour développer vos compétences en Python et mettre en oeuvre les concepts que vous avez rencontrés dans les chapitres précédents.

21.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.

21.1.1 Composition aminée

Dans un premier temps, composez 5 mots anglais avec les 20 acides aminés.

21.1.2 Des mots

Téléchargez le fichier english-common-words.txt1. 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.

21.1.3 Des protéines

Téléchargez maintenant le fichier human-proteome.fasta2. Attention, ce fichier est assez gros. Ce fichier provient de la banque de données UniProt à partir de cette page3.

Voici les premières lignes de ce fichier ([...] indique une coupure que nous avons faite) : 

1 >sp|O95139|NDUB6_HUMAN NADH dehydrogenase [ubiquinone] 1 beta [...] 2 MTGYTPDEKLRLQQLRELRRRWLKDQELSPREPVLPPQKMGPMEKFWNKFLENKSPWRKM 3 VHGVYKKSIFVFTHVLVPVWIIHYYMKYHVSEKPYGIVEKKSRIFPGDTILETGEVIPPM 4 KEFPDQHH 1. https://python.sdv.univ-paris-diderot.fr/data-files/english-common-words.txt 2. https://python.sdv.univ-paris-diderot.fr/data-files/human-proteome.fasta 3. https://www.uniprot.org/help/human_proteome 165

Chapitre 21. Mini-projets 21.1. Mots anglais dans le protéome humain

5 >sp|O75438|NDUB1_HUMAN NADH dehydrogenase [ubiquinone] 1 beta [...] 6 MVNLLQIVRDHWVHVLVPMGFVIGCYLDRKSDERLTAFRNKSMLFKRELQPSEEVTWK

7 >sp|Q8N4C6|NIN_HUMAN Ninein OS=Homo sapiens OX=9606 GN=NIN PE=1 SV=4 8 MDEVEQDQHEARLKELFDSFDTTGTGSLGQEELTDLCHMLSLEEVAPVLQQTLLQDNLLG

9 RVHFDQFKEALILILSRTLSNEEHFQEPDCSLEAQPKYVRGGKRYGRRSLPEFQESVEEF 10 PEVTVIEPLDEEARPSHIPAGDCSEHWKTQRSEEYEAEGQLRFWNPDDLNASQSGSSPPQ

 

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éineO95139.

21.1.4 À 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 :



1 ACCESS found in 1 sequences 2 ACID found in 38 sequences 3 ACT found in 805 sequences 4 [...]

 

Cette étape prend quelques minutes. Soyez patient.

21.1.5 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 fonctionsearch_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 :



1 => xxx found in yyy sequences

 

Quel est ce mot ?

Quel pourcentage des séquences du protéome contiennent ce mot ?

21.1.6 Pour être plus complet

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 fonctionsearch_words_in_proteome() de façon à compter le nombre d’occur- rences d’un mot dans les séquences. La méthode .count() vous sera utile.

Dans le document Cours d’introduction à Python avec Rurple (Page 163-167)

Documents relatifs