]> git.immae.eu Git - perso/Denise/oms.git/blob - gestionOMS.py
couleurs personnalisables, affichage amélioré (on peut masquer notamment).
[perso/Denise/oms.git] / gestionOMS.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 """
4 Created on Mon May 18 08:59:11 2020
5
6 @author: sekhmet
7 """
8 from gestion_erreurs import *
9 from configuration import *
10 from gestion_couleurs import *
11
12 import csv
13
14
15
16 ###################################
17 # Section où on prépare le graphique
18 # Fonction qui définit le dégradé
19 def degrade(nb):
20 """
21 prend en arg un float entre 0 et 100 et renvoie un zoli dégradé (triplet rgb)
22 """
23 if nb<50:
24 # degrade sur le bleu
25 return (0,1*nb/50,1-(nb/50))
26 else:
27 # dégradé du vert vers le rouge
28 return ((nb-50)/50,1-(nb-50)/50,0)
29
30 # la liste des numéros de colonne, avec leur label et leur couleur
31 def affichepercentile(pc):
32 if pc==50:
33 return "50% (Médiane)"
34 else:
35 return str(pc)+"%"
36 def afficheecarttype(z):
37 if z==0:
38 return "Moyenne"
39 else:
40 #return ("z = "+str(z))
41 if z>0:
42 chaine = r"$+"+str(z)+" \sigma$"
43 else:
44 chaine = r"$"+str(z)+"\sigma$"
45 return (chaine)
46
47 def renvoie_liste_labels(conf,liste_data_choisie_p,liste_data_choisie_z,liste_err):
48 """ fabrique les deux listes de labels OMS"""
49 #warning(str(liste_data_choisie_p),liste_err)
50 liste_data_labels_p = [(nocol,affichepercentile(pc),degrade_choix(conf["couleur1"],conf["couleur2"],conf["couleur3"],pc)) for (nocol,pc) in liste_data_choisie_p]
51 liste_data_labels_z = [(nocol,afficheecarttype(z),degrade_choix(conf["couleur1"],conf["couleur2"],conf["couleur3"],(z+3)/3*50) ) for (nocol,z) in liste_data_choisie_z]
52 return liste_data_labels_p,liste_data_labels_z
53
54 #liste_data_labels= liste_data_labels_z
55
56
57
58
59 ##################### outils pour lire les données OMS
60
61 def convertit_ligne(ligne):
62 """ transforme une table en table de nombres"""
63 t = []
64 for elt in ligne:
65 t.append(float(elt))
66 return t
67
68
69
70 def lire_fichier_csv(fichier):
71 """ lire un fichier csv et le renvoyer en table"""
72 table=[]
73 with open(fichier, "r") as fichier_csv:
74 reader_notes = csv.reader(fichier_csv,delimiter="\t")
75 debut = True
76 for ligne in reader_notes:
77 if (not debut):
78 table.append(convertit_ligne(ligne))
79 #table.append(ligne)
80 else:
81 debut = False
82 return table
83
84
85 def extraire_colonne(table,ncol,maxi):
86 """ extrait une colonne d'un tableau double, de taille maximum maxi"""
87 t = []
88 for i in range( min(len(table),maxi) ):
89 t.append(table[i][ncol])
90 return t
91