author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
Wed, 22 Mar 2017 20:18:01 +0100 | |
changeset 2185 | 6b98ceed0626 |
parent 2123 | cf7b4ab31f0c |
child 2440 | 0fa7971071b1 |
permissions | -rw-r--r-- |
2123
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
1 |
# Code dedicated to debug commands around evolution |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
2 |
# |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
3 |
# Copyright 2017 Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
4 |
# |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
5 |
# This software may be used and distributed according to the terms of the |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
6 |
# GNU General Public License version 2 or any later version. |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
7 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
8 |
# Status: Ready to Upstream |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
9 |
# |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
10 |
# * We could have the same code in core as `hg debugobsolete --stat`, |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
11 |
# * We probably want a way for the extension to hook in for extra data. |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
12 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
13 |
from mercurial import node |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
14 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
15 |
from mercurial.i18n import _ |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
16 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
17 |
from . import exthelper |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
18 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
19 |
eh = exthelper.exthelper() |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
20 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
21 |
@eh.command('debugobsstorestat', [], '') |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
22 |
def cmddebugobsstorestat(ui, repo): |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
23 |
"""print statistics about obsolescence markers in the repo""" |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
24 |
def _updateclustermap(nodes, mark, clustersmap): |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
25 |
c = (set(nodes), set([mark])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
26 |
toproceed = set(nodes) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
27 |
while toproceed: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
28 |
n = toproceed.pop() |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
29 |
other = clustersmap.get(n) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
30 |
if (other is not None |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
31 |
and other is not c): |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
32 |
other[0].update(c[0]) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
33 |
other[1].update(c[1]) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
34 |
for on in c[0]: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
35 |
if on in toproceed: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
36 |
continue |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
37 |
clustersmap[on] = other |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
38 |
c = other |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
39 |
clustersmap[n] = c |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
40 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
41 |
store = repo.obsstore |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
42 |
unfi = repo.unfiltered() |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
43 |
nm = unfi.changelog.nodemap |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
44 |
ui.write(_('markers total: %9i\n') % len(store._all)) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
45 |
sucscount = [0, 0, 0, 0] |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
46 |
known = 0 |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
47 |
parentsdata = 0 |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
48 |
metakeys = {} |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
49 |
# node -> cluster mapping |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
50 |
# a cluster is a (set(nodes), set(markers)) tuple |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
51 |
clustersmap = {} |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
52 |
# same data using parent information |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
53 |
pclustersmap = {} |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
54 |
for mark in store: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
55 |
if mark[0] in nm: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
56 |
known += 1 |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
57 |
nbsucs = len(mark[1]) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
58 |
sucscount[min(nbsucs, 3)] += 1 |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
59 |
meta = mark[3] |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
60 |
for key, value in meta: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
61 |
metakeys.setdefault(key, 0) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
62 |
metakeys[key] += 1 |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
63 |
meta = dict(meta) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
64 |
parents = [meta.get('p1'), meta.get('p2')] |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
65 |
parents = [node.bin(p) for p in parents if p is not None] |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
66 |
if parents: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
67 |
parentsdata += 1 |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
68 |
# cluster handling |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
69 |
nodes = set(mark[1]) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
70 |
nodes.add(mark[0]) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
71 |
_updateclustermap(nodes, mark, clustersmap) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
72 |
# same with parent data |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
73 |
nodes.update(parents) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
74 |
_updateclustermap(nodes, mark, pclustersmap) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
75 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
76 |
# freezing the result |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
77 |
for c in clustersmap.values(): |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
78 |
fc = (frozenset(c[0]), frozenset(c[1])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
79 |
for n in fc[0]: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
80 |
clustersmap[n] = fc |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
81 |
# same with parent data |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
82 |
for c in pclustersmap.values(): |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
83 |
fc = (frozenset(c[0]), frozenset(c[1])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
84 |
for n in fc[0]: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
85 |
pclustersmap[n] = fc |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
86 |
ui.write((' for known precursors: %9i\n' % known)) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
87 |
ui.write((' with parents data: %9i\n' % parentsdata)) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
88 |
# successors data |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
89 |
ui.write(('markers with no successors: %9i\n' % sucscount[0])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
90 |
ui.write((' 1 successors: %9i\n' % sucscount[1])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
91 |
ui.write((' 2 successors: %9i\n' % sucscount[2])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
92 |
ui.write((' more than 2 successors: %9i\n' % sucscount[3])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
93 |
# meta data info |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
94 |
ui.write((' available keys:\n')) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
95 |
for key in sorted(metakeys): |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
96 |
ui.write((' %15s: %9i\n' % (key, metakeys[key]))) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
97 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
98 |
allclusters = list(set(clustersmap.values())) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
99 |
allclusters.sort(key=lambda x: len(x[1])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
100 |
ui.write(('disconnected clusters: %9i\n' % len(allclusters))) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
101 |
|
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
102 |
ui.write(' any known node: %9i\n' |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
103 |
% len([c for c in allclusters |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
104 |
if [n for n in c[0] if nm.get(n) is not None]])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
105 |
if allclusters: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
106 |
nbcluster = len(allclusters) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
107 |
ui.write((' smallest length: %9i\n' % len(allclusters[0][1]))) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
108 |
ui.write((' longer length: %9i\n' |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
109 |
% len(allclusters[-1][1]))) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
110 |
median = len(allclusters[nbcluster // 2][1]) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
111 |
ui.write((' median length: %9i\n' % median)) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
112 |
mean = sum(len(x[1]) for x in allclusters) // nbcluster |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
113 |
ui.write((' mean length: %9i\n' % mean)) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
114 |
allpclusters = list(set(pclustersmap.values())) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
115 |
allpclusters.sort(key=lambda x: len(x[1])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
116 |
ui.write((' using parents data: %9i\n' % len(allpclusters))) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
117 |
ui.write(' any known node: %9i\n' |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
118 |
% len([c for c in allclusters |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
119 |
if [n for n in c[0] if nm.get(n) is not None]])) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
120 |
if allpclusters: |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
121 |
nbcluster = len(allpclusters) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
122 |
ui.write((' smallest length: %9i\n' |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
123 |
% len(allpclusters[0][1]))) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
124 |
ui.write((' longer length: %9i\n' |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
125 |
% len(allpclusters[-1][1]))) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
126 |
median = len(allpclusters[nbcluster // 2][1]) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
127 |
ui.write((' median length: %9i\n' % median)) |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
128 |
mean = sum(len(x[1]) for x in allpclusters) // nbcluster |
cf7b4ab31f0c
split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
129 |
ui.write((' mean length: %9i\n' % mean)) |