3 from number
import Number
7 return sum(l
) / float(len(l
))
12 self
.method_avg_sdsq
= {}
14 def addMeasurement(self
, m
):
16 l
= self
.method_data
.get(m
.method
, [])
17 l
.append( m
.computeStats() )
18 self
.method_data
[m
.method
] = l
20 def computeStats(self
, verbose
=False):
21 for method
, l
in self
.method_data
.iteritems():
22 avg_sdsq
= avg( [ t
[2] for t
in l
] )
23 min_sdsq
= min( t
[2] for t
in l
)
24 max_sdsq
= max( t
[2] for t
in l
)
26 self
.method_avg_sdsq
[method
] = avg_sdsq
29 print "min =", min_sdsq
30 print "avg =", avg_sdsq
31 print "max =", max_sdsq
34 def __init__(self
, name
, ms
, method
=None, units
=None, precise
=False):
42 self
.ms
= map(float, ms
)
46 self
.precise
= precise
48 def computeStats(self
):
51 # delime takhle kvuli nevychylenymu odhadu
52 sdsq
= sum((x
- mean
)**2 for x
in self
.ms
) / ( (n
- 1) if n
> 1 else 1 )
54 return (n
, mean
, sdsq
)
56 def toNumber(self
, method_resolution
=None, method_analyzer
=None):
58 return Number(self
.ms
[0], units
=self
.units
, string
=self
.name
)
60 n
, mean
, sdsq
= self
.computeStats()
63 mavg
= method_analyzer
.method_avg_sdsq
[self
.method
]
67 # the more measurements, the better
71 # add the resolution of the method
72 sdsq
+= method_resolution
[self
.method
] ** 2
74 return Number(mean
, sdsq
=sdsq
, units
=self
.units
, string
=self
.name
)