TD 2 – Fonctions Notions : Encore s`exercer sur les boucles (for et

publicité
TD2–Fonctions
Notions:
Encores’exercersurlesboucles(foretwhile),lesifetleslistes
- Lesfonctions
- Lesclasses(basique)
- Structurerunprogramme
VousécrirezvosfonctionsdelapremièrepartiedansunfichiernomméTP2.py.
Cefichierestun«script»python.
Nous vous demandons qu’ils respectent toujours l’organisation décrite cidessous:
- Une première ligne contenant « # -*- coding: utf-8 -*- » pour éviter les
problèmesd’accents.
- Des commentaires avant chaque fonction décrivant ce qu’elle faite et ses
arguments(typedesargumentsetcequefaitlafonction)
- Une fonction main() à la fin du script qui appelle les autres fonctions et qui
grâceaudernierifseraappeléelorsdel’exécutionduscript.
-Pourquevosscriptsrestentclairsetlisibles,ilvousestdemanderdene
pasécriredecodepythonailleursquedansunefonction.
# -*- coding: utf-8 -*# maFonction1: Expliquer ce que fait maFonction1
#ce que sont ses arguments...
def maFonction1(arg1, arg2, arg3):
return arg1+arg2+arg3
#plus(a,b) : fonction retournant la somme de a et b
#a : nombre
#b : nombre
def plus(a,b):
return a+b
#Fonction principale, appelant les autres fonctions
def main() :
print maFonction1(5,6,7)
b=plus(5,6)
print b
#Appel de la fonction main
if __name__ == '__main__':
main()
Partie1.
Calculdel’enfouissement
Nousallonsécrireunepetitebibliothèquedefonctionspermettantdefairedes
calculssurlesinformationsextraitesdefichierpdb.Cesfonctionsserontutilisées
ultérieurementdanslecadreparticulierdel’analysedeséquencesbiologiques.
Vous sauvegarderez vos différentes fonctions dans un fichier nommé
enfouissement.py.
Vousprendrezbiensoindetesterchacunedevosfonctionsindividuellementet
justeaprèslesavoirécrites.
Voici le descriptif de la variance circulaire (CV), mesure qui permet d'évaluer
l'enfouissement d'un résidu. Elle mesure la distribution vectorielle d’un
ensemblede pointsvoisinsd’unpointfixe.Pourunrésidudonné,CVreflètela
densitédelaprotéine autoursdelui.Lavariancecirculaired’unatomeiest:
oùniestlenombred’atomesjàmoinsdercÅdel’atomei.rijestlevecteurentre
les atomesietj.
Lavariancecirculaired’unrésiduestalorscalculéecommelamoyennedesCV
surtous sesatomes.LesvaleursdeCVvariententre0et1.UnevaleurfaibledeC
indique que le résidu est dans une région protubérante de la surface de la
protéine.
Exercice1.
(obligatoire)UtilisationdebibliothèquesetClasseAtom
Il existe de nombreuses bibliothèques (modules) en python, par exemple la
bibliothèque math qui contient la fonction sqrt (racine carrée). Pour utiliser la
fonction sqrt il faut importer la bibliothèque math avec la commande import
math.Ilestpossiblederéutiliserlesfonctionsquevousavezécritesdansunautre
fichierdelamêmemanière.
Voiciunexempled’utilisation(quevouspouvezrecopierdansunfichiertest.py)
:
# -*- coding: utf-8 *-*
import math
import TP2
def main() :
print math.sqrt(2)
print TP2.carre(math.sqrt(2)))
Voici la définition de la classe Atom à recopier dans votre fichier
enfouissement.py:
class Atom:
def __init__(self, x, y, z, numRes=-1, resType=”X”, sse=”X”):
self.x = x
self.y = y
self.z = z
self.numRes=numRes #numéro PDB du résidu
self.resType=resType #code 3 lettres de l'aa
self.sse=sse #Code 1 lettre de la Structure secondaire
Voiciunexempledecommandepythonpourcréerunatome:
>>>at1=Atom(0.1,-99.6, 55.4)
Vouspouvezaccéderàlacoordonnéexainsi:
>>>printat1.x
Ecrire le code d’une fonction distance(atom1, atom2) qui calcule et retourne la
distance euclidienne entre deux atomes atom1 et atom2. Tester cette fonction
dansleprogrammeprincipal(main)endemandantàl’utilisateurlescoordonnées
dedeuxpointsetafficherlavaleurdeladistancequilessépare.
Exercice2.
(entrainement)RMSetlisted’atomes
Le RMSD (Root Mean Square Deviation) est la distance moyenne entre les n
atomesde deuxstructuresaetb.Saformuleestlasuivante:
où(x,y,z)sontlescoordonnéesatomiquescartésiennes.
1)
Ecrirelecoded’unefonction RMSD(L1, L2)quicalculeleRMSDentrelesn
atomesdesdeuxlistesL1etL2.Lafonctionpourraappelerla fonctiondistance.
2)
Pourtestercettefonctiondansleprogrammeprincipalvousutiliserezles
listes d’atomes qui ont été générées à partir des structures 1CLL et 1CFC
superposées (apres pair_fit) et qui vous sont données dans le fichier data.txt.
VouscopierezlesdeuxvariablesCA_1CFCetCA_1CLLdansvotrefonctionmain.
Pour vérifier que le RMS que vous calculez est correct, vous pourrez vous
compareraurmsretournéparlafonctionrms_curdanspymol.Lesfichierspdb
contenant les structures superposées vous sont données (1CFC_superp.ent et
1CLL_superp.ent)
Exercice3.
(obligatoire)Sélectiondesatomesproches
1)
Ecrire le code d’une fonction Env(atomeRef, rc, lesAtomes) qui prend en
argumentunatomeatomeRef,unedistancercetunelisted’atomeslesAtomesetqui
retournelalistesdesatomesàunedistanceinférieureà rcÅdel’atomeatomeRef.
2)
Ilestdifficiledesavoirsilerésultatestcorrect.Pourtestervotrefonction,
nousallonsvisualiserlesatomessélectionnésdanspymol.Pourcela,vousécrirez
unefonctionprint_select_pymol(lesAtomes, objetPymol, nomSel) quiécriradansle
terminallacommandedesélectionpourpymol.L’argumentobjetPymol estlenom
del’objetàsélectionneret nomSel estlenomdelasélection.
Parexemple,nousallonssélectionnerlesrésidusprochesdupremierrésidude
1CLL.Silesrésidussélectionnésparvotrefonctionsontlesrésidus25et46,vous
devrezafficheravecvotreprogrammepythondansleterminalselect proche1er,
object 1cll and (resi 24 or resi 46). Vous copierezensuitecettecommande
danspymoletvisualiserezlasélection.Vousvérifierezensuiteaveclafonction
distance de pymol si la distance entre les deux Ca les plus éloignés est bien
inférieureouégaleà10.
Exercice4.
(obligatoire)Calculvectoriel
1)
Ecrire le code d’une fonction Rij(ati, atj) qui calcule et retourne les
coordonnéesduvecteur rijàpartirdescoordonnéesdesatomes atiet atj.Ces
coordonnéessontreprésentéesparuntuple(x,y,z).
2)
Ecrire le code d’une fonction Norme(x,y,z) qui retourne la norme d’un
vecteuràpartirde sescoordonnées.
Exercice5.
(obligatoire)Calculdelavariancecirculaire.
1)
Ecrirelecoded’unefonctionCVi(ati, rc, lesAtomes) quicalculeetretourne
la variance circulaire de l’atome ati à partir de la liste d’atomes lesAtomes
contenantlescoordonnéesde touslesatomesd’uneprotéineetdeladistancerc
(en A, distance maximale pour que 2 atomes soient considérés comme
suffisammentproches).
2)
Ecrire le code d’une fonction CV_AllRes(lesAtomes, rc=12)qui retourne la
variancecirculairepourtouslesatomesdelalistelesAtomesetenneprennant
encomptequelesatomesàmoinsdercA.L’argumentrcapourvaleurpardéfaut
12A et il peut donc être omis lors de l’appel. Les variances calculées seront
retournéessouslaformed’unelistedontl’ordreseralemêmequel’ordredes
atomesdanslalistelesAtomes.
Exercice6.
(obligatoire)Affichagedel’enfouissement
Pour finir, vous vous écrirez une fonction Atomes_Enfouis(lesAtomes, lesCV,
seuilCV) quiretournelalistedesatomesenfouis(dontlavariancecirculaireest
supérieureauseuil).
Dans le main, vous calculerez la variance circulaire des Ca d’une des deux
protéines données et vous afficherez une selection pour pymol qui vous
permettra de visualiser les résidus enfouis dans ce logiciel. Testez plusieurs
valeursdeseuildedistancercetdeseuildevariancecirculaire.
Téléchargement