-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGlobal.py
More file actions
80 lines (63 loc) · 3.29 KB
/
Copy pathGlobal.py
File metadata and controls
80 lines (63 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env python
#-*- coding : utf8 -*-
"""
Author : LesBellesGosses
Description : Projet Barstar
Analyse Globale: etude de la deviation et le changement du rayon de giration de Barstar au cours du temps
"""
import WriteFile as writefile
import StructureTools as ST
#calcul de RMSD global
def RMSDglobal(dico,dico_ref):
"""but : Calculer le RMSD entre chaque conformation et la structure d'origine
input : dictionnaire de la proteine et dictionnaire de la proteine de la structure d'origine
output : dictionnaire contenant pour chaque conformation le RMSD global
"""
dico_RMSD={}
for key in dico:
list_delta=[]
for chain in dico[key]["chains"]:
for res in dico[key][chain]["reslist"]:
list_delta.append(ST.Distance(float(dico[key][chain][res]['CA']['x']),float(dico[key][chain][res]['CA']['y']),float(dico[key][chain][res]['CA']['z']),float(dico_ref['0'][chain][res]['CA']['x']),float(dico_ref['0'][chain][res]['CA']['y']),float(dico_ref['0'][chain][res]['CA']['z']))) # compare dist entre les Ca
dico_RMSD[key]=ST.RMSD(list_delta)
return dico_RMSD
#calcul de giration
def giration(dico):
"""but : calculer le rayon de giration de chaque conformation
input : un dictionnaire de proteine
output : un dictionnaire contenant pour chaque conformation la valeur du rayon de giration associee
"""
dico_Giration={}
for key in dico:
dico_CM=ST.CMglob(dico[key])
list_dist=[]
for res in dico_CM:
if res != "residulist":
list_dist.append(ST.Distance(dico_CM["prot"][0],dico_CM["prot"][1],dico_CM["prot"][2],dico_CM[res][0],dico_CM[res][1],dico_CM[res][2]))
dico_Giration[key]=max(list_dist) #on prend la distance maximale
return dico_Giration
def Global(fichier,dico_ref,path):
"""but: Analyse des changements conformationnels globaux de la proteine
input: Un fichier pdb, un dictionnaire de la structure d'origine, un chemin de repertoire que l'utilisateur avait fourni
"""
print "Parsing:",fichier
dico=ST.ParsingPDB(fichier) #Parse le fichier pdb
list_temps=ST.Temps(fichier)
#calcul RMSD de chaque conformation par rapport a la structure d'origine
#et calcul du rayon de giration de chaque conformation
dico_RMSD=RMSDglobal(dico,dico_ref)
dico_Giration=giration(dico)
writefile.writefile_glob(dico,dico_RMSD,dico_Giration,fichier,path)
####Analyse : Representations graphiques ###################
list_conformation=sorted(int(i) for i in dico_RMSD.keys()) #numero de conformation trie
#Variation du RMSD en fonction du temps
title='Analyse Globale : Evolution du RMSD en fonction du temps'
l2=[]
not l2
ST.graph(dico_RMSD,list_temps,l2,title,"RMSD","temps (ps)")
#Variation du rayon de giration en fonction du temps
title='Analyse Globale : Evolution du rayon de giration en fonction du temps'
ST.graph(dico_Giration,list_temps,l2,title,"rayon de giration","temps (ps)")
#Variation du RMSD et Giration en fonction de la conformation
title='Analyse globale : Variation RMSD/Giration en fonction de la conformation'
ST.graph(dico_RMSD,list_conformation,dico_Giration,title,"[RMSD (rouge),Giration (bleu)]","conformation") #Il y autant de conformation que de mesures de temps