Skip to content

Commit 293cfdb

Browse files
committed
switching from pylab to pyplot // use short notation of numpy // some PEP8 fixes
1 parent 09be7c0 commit 293cfdb

1 file changed

Lines changed: 34 additions & 30 deletions

File tree

controlchart/__init__.py

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
License: MIT
99
"""
1010

11-
import numpy
11+
import numpy as np
12+
from matplotlib import pyplot
1213

13-
try:
14-
import pylab
15-
from matplotlib import pyplot
16-
mpl_present = True
17-
except ImportError:
18-
mpl_present = False
14+
# try:
15+
# import pylab
16+
# from matplotlib import pyplot
17+
# mpl_present = True
18+
# except ImportError:
19+
# mpl_present = False
1920

2021
CHART_X_BAR_R_X = "x_bar R - X"
2122
CHART_X_BAR_R_R = "x_bar R - R"
@@ -104,7 +105,7 @@ def test_violating_runs(data, center, lcl, ucl):
104105

105106
def get_stats_x_mr_x(data, size):
106107
assert size == 1
107-
center = numpy.mean(data)
108+
center = np.mean(data)
108109
sd = 0
109110
for i in xrange(len(data)-1):
110111
sd += abs(data[i] - data[i+1])
@@ -139,7 +140,7 @@ def get_stats_x_bar_r_x(data, size):
139140
r_sum += max(xset) - min(xset)
140141
r_bar = r_sum / len(data)
141142

142-
x_bar = numpy.mean(data)
143+
x_bar = np.mean(data)
143144

144145
center = x_bar
145146
lcl = center - A2[n]*r_bar
@@ -169,8 +170,8 @@ def get_stats_x_bar_s_x(data, size):
169170
assert n >= 2
170171
assert n <= 10
171172

172-
s_bar = numpy.mean(numpy.std(data, 1, ddof=1))
173-
x_bar = numpy.mean(data)
173+
s_bar = np.mean(np.std(data, 1, ddof=1))
174+
x_bar = np.mean(data)
174175

175176
center = x_bar
176177
lcl = center - A3[n]*s_bar
@@ -183,7 +184,7 @@ def get_stats_x_bar_s_s(data, size):
183184
assert n >= 2
184185
assert n <= 10
185186

186-
s_bar = numpy.mean(numpy.std(data, 1, ddof=1))
187+
s_bar = np.mean(np.std(data, 1, ddof=1))
187188

188189
center = s_bar
189190
lcl = B3[n]*s_bar
@@ -196,7 +197,7 @@ def get_stats_p(data, size):
196197
assert n > 1
197198

198199
pbar = float(sum(data)) / (n * len(data))
199-
sd = numpy.sqrt(pbar*(1-pbar)/n)
200+
sd = np.sqrt(pbar*(1-pbar)/n)
200201

201202
center = pbar
202203
lcl = center - 3*sd
@@ -213,7 +214,7 @@ def get_stats_np(data, size):
213214
assert n > 1
214215

215216
pbar = float(sum(data)) / (n * len(data))
216-
sd = numpy.sqrt(n*pbar*(1-pbar))
217+
sd = np.sqrt(n*pbar*(1-pbar))
217218

218219
center = n*pbar
219220
lcl = center - 3*sd
@@ -226,13 +227,13 @@ def get_stats_np(data, size):
226227

227228

228229
def get_stats_c(data, size):
229-
cbar = numpy.mean(data)
230+
cbar = np.mean(data)
230231

231232
center = cbar
232-
lcl = center - 3*numpy.sqrt(cbar)
233+
lcl = center - 3*np.sqrt(cbar)
233234
if lcl < 0:
234235
lcl = 0
235-
ucl = center + 3*numpy.sqrt(cbar)
236+
ucl = center + 3*np.sqrt(cbar)
236237
return center, lcl, ucl
237238

238239

@@ -243,10 +244,10 @@ def get_stats_u(data, size):
243244
cbar = float(sum(data))/(len(data)*n)
244245

245246
center = cbar
246-
lcl = center - 3*numpy.sqrt(cbar/n)
247+
lcl = center - 3*np.sqrt(cbar/n)
247248
if lcl < 0:
248249
lcl = 0
249-
ucl = center + 3*numpy.sqrt(cbar/n)
250+
ucl = center + 3*np.sqrt(cbar/n)
250251
return center, lcl, ucl
251252

252253

@@ -267,7 +268,7 @@ def prepare_data_none(data, size):
267268
def prepare_data_x_bar_rs_x(data, size):
268269
data2 = []
269270
for xset in data:
270-
data2.append(numpy.mean(xset))
271+
data2.append(np.mean(xset))
271272
return data2
272273

273274

@@ -281,7 +282,7 @@ def prepare_data_x_bar_r_r(data, size):
281282
def prepare_data_x_bar_s_s(data, size):
282283
data2 = []
283284
for xset in data:
284-
data2.append(numpy.std(xset, ddof=1))
285+
data2.append(np.std(xset, ddof=1))
285286
return data2
286287

287288

@@ -306,7 +307,7 @@ def prepare_data_u(data, size):
306307
return data2
307308

308309

309-
def prepare_data_cusum(data, size, target = None):
310+
def prepare_data_cusum(data, size, target=None):
310311
"""
311312
Prepares the data for a CUSUM graph
312313
@@ -320,7 +321,7 @@ def prepare_data_cusum(data, size, target = None):
320321
"""
321322
data2 = []
322323
if target is None:
323-
target = numpy.mean(data)
324+
target = np.mean(data)
324325
for d in data:
325326
data2.append(float(d) - target)
326327
data3 = [sum(data2[:i]) for i in xrange(len(data2)+1)]
@@ -411,16 +412,16 @@ def _find_violating_points(self, rules=[]):
411412
for i in xrange(len(self._data)):
412413
for r in rs:
413414
func, points_num = RULES_FUNCS[r]
414-
if func == None or i <= points_num - 1:
415+
if func is None or i <= points_num - 1:
415416
continue
416417
if func(self._data[i-points_num+1:i+1], self.center, self.lcl, self.ucl):
417418
points.setdefault(r, []).append(i)
418419
return points
419420

420421
def get_chart(self, ax=None):
421422
"""Generate chart using matplotlib."""
422-
if not mpl_present:
423-
raise Exception("matplotlib not installed")
423+
# if not mpl_present:
424+
# raise Exception("matplotlib not installed")
424425
if ax is None:
425426
ax = pylab
426427
ax.plot(self._data, "bo-")
@@ -436,19 +437,22 @@ def get_chart(self, ax=None):
436437
pylab.figtext(0.3, 0.01, "UCL = %0.3f" % self.ucl)
437438
# pylab.figtext(0.05, 0.01, "StdDev = %0.3f" % self.sd)
438439

439-
if self.violating_points.has_key(RULES_7_ON_ONE_SIDE):
440+
if RULES_7_ON_ONE_SIDE in self.violating_points:
441+
# if self.violating_points.has_key():
440442
for i in self.violating_points[RULES_7_ON_ONE_SIDE]:
441443
ax.plot([i], [self._data[i]], "yo")
442-
if self.violating_points.has_key(RULES_8_ON_ONE_SIDE):
444+
if RULES_8_ON_ONE_SIDE in self.violating_points:
445+
# if self.violating_points.has_key(RULES_8_ON_ONE_SIDE):
443446
for i in self.violating_points[RULES_8_ON_ONE_SIDE]:
444447
ax.plot([i], [self._data[i]], "yo")
445-
if self.violating_points.has_key(RULES_1_BEYOND_3SIGMA):
448+
if RULES_1_BEYOND_3SIGMA in self.violating_points:
449+
# if self.violating_points.has_key(RULES_1_BEYOND_3SIGMA):
446450
for i in self.violating_points[RULES_1_BEYOND_3SIGMA]:
447451
ax.plot([i], [self._data[i]], "ro")
448452
# pylab.show()
449453
return ax
450454

451-
def get_violating_points(self, rules=[]):
455+
def get_violating_points(self):
452456
"""Return points that violates rules of control chart"""
453457
return self.violating_points
454458

0 commit comments

Comments
 (0)