#!/usr/bin/env python # -*-coding:Utf-8 -*- ####################### 1. Saisie de la sequence du peptide et nettoyage de la sequence ####################### peptide = raw_input("Entrez la sequence du peptide en majuscules : ") print("\n") # Retour a la ligne nonValides = 0 # Initialisation de la variable nombre caracteres non valides caracteresNonValides = '' # Initialisation de la chaine de caracteres non valides sequenceCorrecte = '' # Initialisation de la chaine de caracteres valides for acideAmine in peptide : # boucle pour parcourir la chaine "peptide" if acideAmine not in "AERTYIPMLKHGFDSQWCVN" : caracteresNonValides = caracteresNonValides + acideAmine nonValides = nonValides + 1 sequenceCorrecte = sequenceCorrecte else : sequenceCorrecte = sequenceCorrecte + acideAmine # On concatene tous les caracteres valides nombreReelAA = len(peptide) - nonValides # nombre d'acides amines valides du peptide print "Caracteres non valides :",caracteresNonValides print("\n") # Retour a la ligne ####################### 2. Affichage des residus hydrophobes du peptide ####################### residusHydrophobes ='' # initialisation de la chaine vide des residus hydrophobes for acideAmine in sequenceCorrecte : # boucle pour parcourir la chaine "peptide" if acideAmine in 'ACFILMV' : residusHydrophobes = residusHydrophobes + '*' # si residu hydrophobe : on ajoute * dans la chaine "residusHydrophobes" else : residusHydrophobes = residusHydrophobes + ' ' # sinon : on ajoute un espace dans la chaine "residusHydrophobes" print "Sequence corrigee :", sequenceCorrecte print "Residus hydrophobes :", residusHydrophobes print("\n") # Retour a la ligne ####################### 3. Creation de deux listes a partir d'un tableau dans un fichier texte & creation d'un dictionnaire ####################### listeAcidesAmines = [] # creation liste vide listeHydrophobicite = [] # creation liste vide dictionnaire = {} # creation d'un dictionnaire vide fichierOuvert = open('hydrophobicite.txt') # Ouverture du fichier qui contient le tableau acide amine <=> valeur d'hydrophobicite fichierOuvert.readline() # lecture de la ligne d'entete avec readline() => on n'en fait rien car pas stocke dans une variable for ligne in fichierOuvert.readlines(): # boucle de lecture des AUTRES lignes avec readlines() AA,indexHydrophobicite = ligne.strip().split() # Convertion chaine en liste : methode split() avec comme parametre = le(s) caractere(s) utilise(s) pour decouper la chaine (ici l'espace) listeAcidesAmines.append(AA) # ajoute AA dans ListeAcidesAmines listeHydrophobicite.append(float(indexHydrophobicite)) # ajoute la valeur d'hydrophobicite (indexHydrophobicite) convertie en reel dictionnaire[AA] = indexHydrophobicite # Associe chaque cle (l'acide amine) a chaque valeur (son hydrophobicite) dans le dictionnaire ####################### 4. Affichage des listes et du dictionnaire ################ print "Acide amine"," Hydrophobicite" for i in range(20): print ' ' , listeAcidesAmines[i] , ' ' , listeHydrophobicite[i] print("\n") # Retour a la ligne print "Dictionnaire {'Acide amine': 'Hydrophobicite'} :" print dictionnaire print("\n") # Retour a la ligne ####################### 5. Autre affichage dictionnaire ################ print "Autre affichage du dictionnaire :" for cles,valeurs in dictionnaire.items(): print "Acide amine :", cles, " hydrophobicite :", valeurs # IMPORTANT : une virgule ou le terme end ='' en fin de "print" empeche le retour a la ligne print("\n") # Retour a la ligne ####################### 6. Calcul hydrophobicite globale du peptide ################ print "Sequence corrigee :", sequenceCorrecte sommeHydrophobicite = 0 # Initialisation de la variable somme de l'hydrophobicite ##### Somme de l'hydrophobicite ##### for acideAmine in sequenceCorrecte : # boucle pour parcourir la chaine "peptide" valeurHydrophobicite = dictionnaire.get(acideAmine) # La methode get recupere la valeur associee a une cle dans un dictionnaire valeurHydrophobicite = float(valeurHydrophobicite) # Transformation de la chaine de caractere en reel pour calculer la somme d'hydrophobicite sommeHydrophobicite += valeurHydrophobicite # Accumulation (operateur +=) des valeurs d'hydrophobicite dans la meme variable print "Acide amine :", acideAmine, "| hydrophobicite :", dictionnaire.get(acideAmine), "| hydrophobicite cumulee =", sommeHydrophobicite hydrophobiciteMoyenne = sommeHydrophobicite/nombreReelAA # On ramene l'hydrophobicite au nombre d'acides amines print("\n") # Retour a la ligne ####################### 7. Affichage sequence valide et hydrophobicite moyenne du peptide ################ print "Somme de l'hydrophobicite : ", sommeHydrophobicite print "Nombre de caracteres non valides : ", nonValides print "Sequence corrigee du peptide : ", sequenceCorrecte print "Longueur du peptide : ", nombreReelAA, "acides amines" print "Hydrophobicite moyenne du peptide :", hydrophobiciteMoyenne print("\n") # Retour a la ligne