Mercurial > hg > medcouple
annotate talk/code/show_mc.py @ 67:1aa38f4846e0
showalgo: show the rank
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Wed, 18 May 2016 17:43:45 -0400 |
parents | 916349600c4b |
children | 5510ac95a3d3 |
rev | line source |
---|---|
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
3 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
4 # medcouple.py --- |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
5 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
6 # Copyright © 2015 Jordi Gutiérrez Hermoso <jordigh@octave.org> |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
7 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
8 # Author: Jordi Gutiérrez Hermoso |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
9 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
10 # This program is free software; you can redistribute it and/or |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
11 # modify it under the terms of the GNU General Public License |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
12 # as published by the Free Software Foundation; either version 3 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
13 # of the License, or (at your option) any later version. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
14 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
15 # This program is distributed in the hope that it will be useful, |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
18 # GNU General Public License for more details. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
19 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
20 # You should have received a copy of the GNU General Public License |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
21 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
22 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
23 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
24 import numpy as np |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
25 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
26 from itertools import tee, izip |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
27 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
28 def wmedian(A, W): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
29 """This computes the weighted median of array A with corresponding |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
30 weights W. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
31 """ |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
32 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
33 AW = zip(A, W) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
34 n = len(AW) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
35 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
36 wtot = sum(W) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
37 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
38 beg = 0 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
39 end = n - 1 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
40 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
41 while True: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
42 mid = (beg + end)//2 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
43 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
44 AW = sorted(AW, key = lambda x: x[0]) # A partial sort would suffice here |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
45 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
46 trial = AW[mid][0] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
47 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
48 wleft = wright = 0 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
49 for (a, w) in AW: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
50 if a < trial: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
51 wleft += w |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
52 else: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
53 # This also includes a == trial, i.e. the "middle" |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
54 # weight. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
55 wright += w |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
56 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
57 if 2*wleft > wtot: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
58 end = mid |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
59 elif 2*wright < wtot: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
60 beg = mid |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
61 else: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
62 return trial |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
63 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
64 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
65 def medcouple_1d(X, eps1 = 2**-52, eps2 = 2**-1022): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
66 """Calculates the medcouple robust measure of skewness. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
67 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
68 Parameters |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
69 ---------- |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
70 y : array-like, 1-d |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
71 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
72 Returns |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
73 ------- |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
74 mc : float |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
75 The medcouple statistic |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
76 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
77 .. [1] G. Brys, M. Hubert, and A. Struyf "A Robust Measure of |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
78 Skewness." Journal of Computational and Graphical Statistics, Vol. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
79 13, No. 4 (Dec., 2004), pp. 996- 1017 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
80 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
81 .. [2] D. B. Johnson and T. Mizoguchi "Selecting the Kth Element |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
82 in $X + Y$ and $X_1 + X_2 + \cdots X_m$". SIAM Journal of |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
83 Computing, Vol. 7, No. 2 (May 1978), pp. 147-53. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
84 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
85 """ |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
86 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
87 # Yeah, yeah, leaky file handles; it'll be handled by the time the |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
88 # program closes. |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
89 Hfile = open("H", "w") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
90 Amfile = open("Am", "w") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
91 Rfile = open("R", "w") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
92 Lfile = open("L", "w") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
93 Pfile = open("P", "w") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
94 Qfile = open("Q", "w") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
95 RemFile = open("remaining", "w") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
96 Ptotfile = open("Ptotal", "w") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
97 Qtotfile = open("Qtotal", "w") |
67
1aa38f4846e0
showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
66
diff
changeset
|
98 medc_idxfile = open("medc_idx", "w") |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
99 jackpot = open("jackpot", "w") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
100 |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
101 # FIXME: Figure out what to do about NaNs. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
102 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
103 n = len(X) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
104 n2 = (n - 1)//2 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
105 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
106 if n < 3: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
107 return 0 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
108 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
109 Z = sorted([float(x) for x in X], reverse=True) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
110 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
111 if n % 2 == 1: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
112 Zmed = Z[n2] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
113 else: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
114 Zmed = (Z[n2] + Z[n2 + 1])/2 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
115 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
116 #Check if the median is at the edges up to relative epsilon |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
117 if abs(Z[0] - Zmed) < eps1*(eps1 + abs(Zmed)): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
118 return -1.0 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
119 if abs(Z[-1] - Zmed) < eps1*(eps1 + abs(Zmed)): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
120 return 1.0 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
121 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
122 # Centre Z wrt median, so that median(Z) = 0. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
123 Z = [z - Zmed for z in Z] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
124 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
125 # Scale inside [-0.5, 0.5], for greater numerical stability. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
126 Zden = 2*max(Z[0], -Z[-1]) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
127 Z = [z/Zden for z in Z] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
128 Zmed /= Zden |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
129 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
130 Zeps = eps1*(eps1 + abs(Zmed)) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
131 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
132 # These overlap on the entries that are tied with the median |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
133 Zplus = [z for z in Z if z >= -Zeps] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
134 Zminus = [z for z in Z if Zeps >= z] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
135 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
136 n_plus = len(Zplus) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
137 n_minus = len(Zminus) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
138 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
139 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
140 def h_kern(i, j): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
141 """Kernel function h for the medcouple, closing over the values of |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
142 Zplus and Zminus just defined above. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
143 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
144 In case a and be are within epsilon of the median, the kernel |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
145 is the signum of their position. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
146 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
147 """ |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
148 a = Zplus[i] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
149 b = Zminus[j] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
150 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
151 if abs(a - b) <= 2*eps2: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
152 h = signum(n_plus - 1 - i - j) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
153 else: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
154 h = (a + b)/(a - b) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
155 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
156 return h |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
157 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
158 for i, zp in enumerate(Zplus): |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
159 for j, zm in enumerate(Zminus): |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
160 Hfile.write("%s " % h_kern(i, j)), |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
161 Hfile.write("\n") |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
162 |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
163 # Init left and right borders |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
164 L = [0]*n_plus |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
165 R = [n_minus - 1]*n_plus |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
166 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
167 Ltot = 0 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
168 Rtot = n_minus*n_plus |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
169 medc_idx = Rtot//2 |
67
1aa38f4846e0
showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
66
diff
changeset
|
170 medc_idxfile.write("%s\n" % medc_idx) |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
171 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
172 Lfile.write("%s\n" % L) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
173 Rfile.write("%s\n" % R) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
174 RemFile.write("%s\n" % Rtot) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
175 |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
176 # kth pair algorithm (Johnson & Mizoguchi) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
177 while Rtot - Ltot > n_plus: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
178 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
179 # First, compute the median inside the given bounds |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
180 # (Be stingy, reuse same generator) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
181 [I1, I2] = tee(i for i in xrange(0, n_plus) if L[i] <= R[i]) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
182 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
183 A = [h_kern(i, (L[i] + R[i])//2) for i in I1] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
184 W = [R[i] - L[i] + 1 for i in I2] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
185 Am = wmedian(A, W) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
186 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
187 Am_eps = eps1*(eps1 + abs(Am)) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
188 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
189 Amfile.write("%s\n" % Am) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
190 |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
191 # Compute new left and right boundaries, based on the weighted |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
192 # median |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
193 P = [] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
194 Q = [] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
195 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
196 j = 0 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
197 for i in xrange(n_plus - 1, -1, -1): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
198 while j < n_minus and h_kern(i, j) - Am > Am_eps: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
199 j += 1 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
200 P.append(j - 1) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
201 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
202 P.reverse() |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
203 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
204 j = n_minus - 1 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
205 for i in xrange(0, n_plus): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
206 while j >= 0 and h_kern(i, j) - Am < -Am_eps: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
207 j -= 1 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
208 Q.append(j + 1) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
209 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
210 # Check on which side of those bounds the desired median of |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
211 # the whole matrix may be. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
212 sumP = sum(P) + len(P) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
213 sumQ = sum(Q) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
214 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
215 Ptotfile.write("%s\n" % sumP) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
216 Qtotfile.write("%s\n" % sumQ) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
217 Pfile.write("%s\n" % P) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
218 Qfile.write("%s\n" % Q) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
219 |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
220 if medc_idx <= sumP - 1: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
221 R = P |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
222 Rtot = sumP |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
223 Lfile.write("%s\n" % L) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
224 Rfile.write("%s\n" % R) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
225 RemFile.write("%s\n" % (Rtot - Ltot)) |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
226 else: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
227 if medc_idx > sumQ - 1: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
228 L = Q |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
229 Ltot = sumQ |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
230 Lfile.write("%s\n" % L) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
231 Rfile.write("%s\n" % R) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
232 RemFile.write("%s\n" % (Rtot - Ltot)) |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
233 else: |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
234 jackpot.write("1") |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
235 return Am |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
236 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
237 # Didn't find the median, but now we have a very small search |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
238 # space to find it in, just between the left and right boundaries. |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
239 # This space is of size Rtot - Ltot which is <= n_plus |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
240 jackpot.write("0") |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
241 A = [] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
242 for (i, (l, r)) in enumerate(izip(L, R)): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
243 for j in xrange(l, r + 1): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
244 A.append(h_kern(i, j)) |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
245 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
246 A.sort() # A partial sort would suffice here |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
247 A.reverse() |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
248 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
249 Am = A[medc_idx - Ltot] |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
250 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
251 return Am |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
252 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
253 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
254 def signum(x): |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
255 if x > 0: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
256 return 1 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
257 if x < 0: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
258 return -1 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
259 else: |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
260 return 0 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
261 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
262 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
263 def main(): |
67
1aa38f4846e0
showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
66
diff
changeset
|
264 data = np.random.uniform(size=26) |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
265 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
266 mc = medcouple_1d(data) |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
267 with open("mc", "w") as f: |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
65
diff
changeset
|
268 f.write("%s\n" % mc) |
65
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
269 |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
270 if __name__ == "__main__": |
364a0c9df823
show_mc.py: copy from medcouple.py
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
271 main() |