-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplot_distribution.py
More file actions
120 lines (72 loc) · 3.5 KB
/
plot_distribution.py
File metadata and controls
120 lines (72 loc) · 3.5 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import matplotlib as mpl
#if mpl.get_backend<>'agg':
# mpl.use('agg')
from sensitivity_analysis import *
import stemCell_custom_methods as SC
import gc
import os
import matplotlib.pyplot as plt
#fig=plt.figure(figsize=(15, 9))
def getDistribution(simFolderName,fileNameBins,modelFileName,nSims,varName,time2plot,nBins,normalized):
#importo valori aggregato nel tempo per quel parametro
aggregateVariable_in_time=SC.read_aggregate_variable_timestep(simFolderName,modelFileName,nSims,varName,'NumDivisions',time2plot)
binsKernel=np.loadtxt(fileNameBins)
m=binsKernel[0]
M=binsKernel[-1]
#bins=range(int(m),int(M)+2,1)
if nBins==0:
bins=range(int(m),int(M)+2,1)
else:
bins=np.linspace(int(m),int(M)+2,nBins)
list2hist=aggregateVariable_in_time
freq,binss=np.histogram(list2hist,bins,normed=normalized)
#print 'bins hist',bins,'freq hist',freq
return [freq,bins]
#if nBins is seto to 0 all the possible bins will be plotted
def plotDistribution(sensitivityFolderName,modelFileName,paramName,paramValues,time2plot,nSims,varName,nBins,referenceDistribution,normalized,titlesList,showPlots,savePlots):
fig=plt.figure(figsize=(15, 9))
freq_list=[]
nParam=0
for param in paramValues:
nParam=nParam+1
simFolderName="%s%s%s%s%s" % (sensitivityFolderName,os.sep,modelFileName.strip('.L'),paramName,param)
fileNameBins="%s%s%s%s%s" % (modelFileName.strip('.L'),varName,'_binsKernel',paramName,'.txt')
print 'simFolderName',simFolderName
Distribution=getDistribution(simFolderName,fileNameBins,modelFileName,nSims,varName,time2plot,nBins,normalized)
freq=Distribution[0]
bins=Distribution[1]
freq_list.append(list(freq))
#sovrascrivo sempre la stessa figura 1
#plt.figure(1)
plt.hold(True)
#print 'bins',len(bins),'freq',len(freq)
plt.subplot(2,6,nParam)
plt.bar(bins[0:-1],freq)
#plotto distribuzione di riferimento
if(referenceDistribution!=[]):
plt.hold(True)
plt.bar(referenceDistribution[1][0:-1],referenceDistribution[0],color='r')
plt.hold(False)
plt.ylim([0, max(MaxExt(freq_list),max(referenceDistribution[0]))+0.1 ])
#se fornita aggiungo etichetta con valore distanza
if titlesList!=[]:
print 'titlesList',titlesList
annotation='dist:'+str(titlesList[nParam-1])
plt.text(0.5,0.5,annotation)
else:
plt.ylim([0, MaxExt(freq_list)+0.1 ])
titolo="%s%s" % ('=',param)
plt.title(titolo)
plt.xticks([bins[0],bins[-1]],[bins[0],bins[-1]])
#print 'freq_list',freq_list
#print 'max(MaxExt(freq_list)',MaxExt(freq_list),'max(referenceDistribution[0]))+0.1',max(referenceDistribution[0]),'max(MaxExt(freq_list),max(referenceDistribution[0]))',max(MaxExt(freq_list),max(referenceDistribution[0]))
plt.suptitle(paramName)
if (savePlots):
#save plot
file_name="%s%s%s%s%s%s" % (modelFileName,varName,'Time',time2plot,paramName,'.png')
plt.savefig(file_name,dpi=700)
if(showPlots):
plt.show()
plt.close()
plt.clf()
gc.collect()