Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Tiago Peixoto
graph-tool
Commits
990b4739
Commit
990b4739
authored
Sep 02, 2011
by
Tiago Peixoto
Browse files
Fix "correlated" rewiring mode
This fixes a bug in the "correlated" mode in random_rewire().
parent
bad74126
Changes
8
Hide whitespace changes
Inline
Side-by-side
src/graph/generation/graph_rewiring.hh
View file @
990b4739
...
...
@@ -245,13 +245,18 @@ struct graph_rewire
typedef
typename
graph_traits
<
Graph
>::
edge_descriptor
edge_t
;
vector
<
edge_t
>
edges
;
typedef
random_permutation_iterator
<
typename
vector
<
edge_t
>::
iterator
,
vector
<
size_t
>
edge_pos
;
typedef
random_permutation_iterator
<
typename
vector
<
size_t
>::
iterator
,
rng_t
>
random_edge_iter
;
typename
graph_traits
<
Graph
>::
edge_iterator
e
,
e_end
;
for
(
tie
(
e
,
e_end
)
=
boost
::
edges
(
g
);
e
!=
e_end
;
++
e
)
{
edges
.
push_back
(
*
e
);
edge_pos
.
push_back
(
edge_pos
.
size
());
}
RewireStrategy
<
Graph
,
EdgeIndexMap
,
CorrProb
,
BlockDeg
>
rewire
(
g
,
edge_index
,
edges
,
corr_prob
,
bd
,
rng
);
...
...
@@ -266,8 +271,8 @@ struct graph_rewire
for
(
size_t
i
=
0
;
i
<
niter
;
++
i
)
{
random_edge_iter
ei_begin
(
edges
.
begin
(),
edges
.
end
(),
rng
),
ei_end
(
edges
.
end
(),
edges
.
end
(),
rng
);
ei_begin
(
edge
_po
s
.
begin
(),
edge
_po
s
.
end
(),
rng
),
ei_end
(
edge
_po
s
.
end
(),
edge
_po
s
.
end
(),
rng
);
// for each edge rewire its source or target
for
(
random_edge_iter
ei
=
ei_begin
;
ei
!=
ei_end
;
++
ei
)
...
...
@@ -276,7 +281,7 @@ struct graph_rewire
if
(
verbose
)
print_progress
(
i
,
niter
,
e_pos
,
no_sweep
?
1
:
edges
.
size
(),
str
);
bool
success
=
rewire
(
e_pos
,
self_loops
,
parallel_edges
);
bool
success
=
rewire
(
*
ei
,
self_loops
,
parallel_edges
);
if
(
!
success
)
++
pcount
;
...
...
@@ -492,11 +497,9 @@ public:
base_t
;
typedef
Graph
graph_t
;
typedef
EdgeIndexMap
edge_index_t
;
typedef
typename
graph_traits
<
Graph
>::
vertex_descriptor
vertex_t
;
typedef
typename
graph_traits
<
Graph
>::
edge_descriptor
edge_t
;
typedef
typename
EdgeIndexMap
::
value_type
index_t
;
CorrelatedRewireStrategy
(
Graph
&
g
,
EdgeIndexMap
edge_index
,
vector
<
edge_t
>&
edges
,
CorrProb
,
BlockDeg
,
...
...
@@ -506,40 +509,42 @@ public:
for
(
size_t
ei
=
0
;
ei
<
base_t
::
_edges
.
size
();
++
ei
)
{
// For undirected graphs, there is no difference between source and
// target, and each edge will appear _twice_ in the list
s
below,
// target, and each edge will appear _twice_ in the list below,
// once for each different ordering of source and target.
edge_t
&
e
=
base_t
::
_edges
[
ei
];
_edges_by_target
[
make_pair
(
in_degreeS
()(
target
(
e
,
_g
)
,
_g
),
out_degree
(
t
arget
(
e
,
_g
)
,
_g
))
]
.
push_back
(
make_pair
(
ei
,
false
));
vertex_t
t
=
target
(
e
,
_g
)
;
deg_t
tdeg
=
make_pair
(
in_degreeS
()(
t
,
_g
),
out_degree
(
t
,
_g
))
;
_edges_by_target
[
tdeg
]
.
push_back
(
make_pair
(
ei
,
false
));
if
(
!
is_directed
::
apply
<
Graph
>::
type
::
value
)
{
_edges_by_target
[
make_pair
(
in_degreeS
()(
source
(
e
,
_g
)
,
_g
),
out_degree
(
source
(
e
,
_g
)
,
_g
))
]
.
push_back
(
make_pair
(
ei
,
true
));
t
=
source
(
e
,
_g
)
;
tdeg
=
make_pair
(
in_degreeS
()(
t
,
_g
),
out_degree
(
t
,
_g
))
;
_edges_by_target
[
tdeg
]
.
push_back
(
make_pair
(
ei
,
true
));
}
}
}
pair
<
size_t
,
bool
>
get_target_edge
(
size_t
ei
)
{
pair
<
size_t
,
size_t
>
deg
=
make_pair
(
in_degreeS
()(
target
(
base_t
::
_edges
[
ei
],
_g
),
_g
),
out_degree
(
target
(
base_t
::
_edges
[
ei
],
_g
)
,
_g
));
edges_by_end_deg_t
&
edges
=
_edges_by_target
;
typename
edges_by_end_deg_t
::
mapped_type
&
elist
=
edges
[
deg
];
edge_t
&
e
=
base_t
::
_edges
[
ei
];
vertex_t
t
=
target
(
e
,
_g
);
deg_t
tdeg
=
make_pair
(
in_degreeS
()(
t
,
_g
),
out_degree
(
t
,
_g
));
typename
edges_by_end_deg_t
::
mapped_type
&
elist
=
_edges_by_target
[
t
deg
];
tr1
::
uniform_int
<>
sample
(
0
,
elist
.
size
()
-
1
);
return
elist
[
sample
(
base_t
::
_rng
)];
}
void
update_edge
(
size_t
e
,
bool
insert
)
{}
private:
typedef
tr1
::
unordered_map
<
pair
<
size_t
,
size_t
>
,
vector
<
pair
<
index_t
,
bool
>
>
,
hash
<
pair
<
size_t
,
size_t
>
>
>
typedef
pair
<
size_t
,
size_t
>
deg_t
;
typedef
tr1
::
unordered_map
<
deg_t
,
vector
<
pair
<
size_t
,
bool
>
>
,
hash
<
deg_t
>
>
edges_by_end_deg_t
;
edges_by_end_deg_t
_edges_by_target
;
...
...
src/graph_tool/centrality/__init__.py
View file @
990b4739
...
...
@@ -132,23 +132,23 @@ def pagerank(g, damping=0.85, pers=None, weight=None, prop=None, epsilon=1e-6,
>>> g = gt.random_graph(100, lambda: (poisson(3), poisson(3)))
>>> pr = gt.pagerank(g)
>>> print pr.a
[ 0.0086
7754
0.00
729246 0.00363279 0.00668265
0.0015 0.00
859964
0.00
449637
0.009
61946 0.01295288 0.00882362 0.00719256
0.0028
0697
0.005
18114
0.010
479
04 0.0056
9656
0.005
19058 0.00759745 0.00700835
0.00
870244 0.00522561 0.00233159
0.00
236035
0.0015 0.002
55374
0.00
872139
0.002
27483 0.00686341
0.001
75
5 0.00
488567 0.01045994
0.00
39320
6 0.009
88283
0.01
376133 0.00721883 0.01429166
0.007
5274
8
0.0
1846797 0.00674401 0.00412138
0.00842
639
0.0015 0.00
233159
0.00
306271 0.01902149 0.0099247
0.00
42
898
1
0.00
215072 0.01123842
0.00
236035 0.00768803 0.00463719 0.01130437 0.00392423 0.00491263
0.00
899519 0.00680983 0.0091988
0.004
59334
0.008
090
94 0.00
881614
0.0
1381946
0.00
489
17
1
0.00
425249 0.01957383 0.00708763
0.0015
0.00
418613 0.00607306 0.01287535
0.006
39268
0.01
578391
0.0015
0.0
1541987 0.00860721 0.01378758
0.0173
314
0.00
775072 0.00247939
0.005
24088
0.00
6
86
587
0.00
436895 0.00755964 0.00708251
0.0015
0.00
226438
0.00
18408
5 0.00
5551
71 0.0
1159494 0.01297596 0.00460887
0.00
406717
0.00
5780
91 0.00
548516 0.01197071
0.0067
4202
0.0
1011666
0.010
72786
0.00
646937 0.01430012 0.01483996
]
[ 0.0086
5316
0.00
54067 0.00406312 0.00426668
0.0015 0.00
991696
0.00
550065
0.009
36397 0.00347917 0.00731864 0.00689843
0.0028
6274
0.005
08731
0.010
20
04
7
0.0056
2247
0.005
84915 0.02457086 0.00438568
0.00
57385 0.00621745 0.001755
0.00
45073
0.0015 0.002
25167
0.00
698342
0.002
06302 0.01094466
0.001
92
5 0.00
710093 0.00519877
0.00
46064
6 0.009
94648
0.01
005248 0.00904629 0.00676221
0.007
8920
8
0.0
0933103 0.00301154 0.00264951
0.00842
812
0.0015 0.00
191034
0.00
594069 0.00884372 0.00453417
0.00
38
898
7
0.00
317433 0.0086067
0.00
385394 0.00672702 0.00258411 0.01468262 0.00454 0.00381159
0.00
402607 0.00451133
0.004
80966
0.008
11557 0.00571
94
9
0.00
317433
0.0
0856838
0.00
2805
17 0.00
280563 0.00906324 0.00614421
0.0015
0.00
292034 0.00479769 0.00552694
0.006
04799
0.01
15922
0.0015
0.0
0676183 0.00695336 0.01023352
0.0173
7541
0.00
451443 0.00197688
0.005
53866
0.00
4
86
233
0.00
78653 0.00867599 0.01248092
0.0015
0.00
399605
0.00
39960
5 0.00
8815
71 0.0
0638008 0.01056944 0.00353724
0.00
249869
0.00
684
91
9
0.00
241374 0.01061397
0.0067
3569
0.0
0590937
0.010
04638
0.00
331612 0.00926359 0.00460809
]
Now with a personalization vector, and edge weights:
...
...
@@ -159,23 +159,23 @@ def pagerank(g, damping=0.85, pers=None, weight=None, prop=None, epsilon=1e-6,
>>> p.a /= p.a.sum()
>>> pr = gt.pagerank(g, pers=p, weight=w)
>>> print pr.a
[ 0.007
61942
0.00
761689 0.00418938 0.00947758
0.00092715 0.0
0349991
0.00
811226 0.00448968 0.012098
89 0.0
1384828 0.00600036
0.002
21745
0.00
432908 0.01036427 0.00536132 0.00692364 0.00575216 0.00750936
0.00
924536
0.00
46125
5 0.00
422277 0.00055639
0.00250025 0.00
289125
0.00
925617
0.003
356 0.00642017
0.00
29827
6 0.00
571097 0.01115541
0.00
452616 0.01670105 0.01788592 0.00580217 0.0135000
7 0.008
37655
0.0
1535733 0.00497981
0.00
43600
8 0.0
132437
4 0.00148972 0.002
87379
0.00
408663 0.02785282 0.00790422
0.004917
95
0.00
070143 0.00789247
0.00
033551 0.00777089 0.00278393
0.0
0801
46
8
0.00
452296 0.00378295
0.00
642244 0.00698618
0.0
1
06
9855
0.00
19177
0.007
42151
0.00
872
76
7
0.0
1868187
0.0044
23
59 0.00
593616 0.01517386
0.007
12472
0.00238803
0.00
468324 0.0024983 0.011788 0.00577489
0.0124
2015
0.00300867
0.0
1390361 0.00796192
0.008
22753
0.01
062897 0.00815637 0.00332914
0.00
911336 0.00915715 0.00945334 0.00880299 0.00758402
0.0009367
0.00
378413 0.00174124 0.00283594 0.00929262
0.010
90867
0.00
460206
0.00
341061
0.006
99703
0.002
32131
0.01
244958 0.00731098 0.01288061
0.00
820259 0.00430521
0.0
1633379 0.0119308
]
[ 0.007
12999
0.00
663336 0.00685722 0.00402663
0.00092715 0.0
1021926
0.00
269502 0.0073301 0.00449
89
2
0.0
0582793 0.00580542
0.002
75149
0.00
676363 0.01157972 0.00486918 0.00616345 0.02506695 0.00607967
0.00
553375
0.00
35907
5 0.00
293808 0.00362247
0.00250025 0.00
186946
0.00
895516
0.003
18147 0.01489786
0.00
31243
6 0.00
74751 0.0040342
0.00
6254 0.00687051 0.0098073 0.01076278 0.0088707
7 0.008
06759
0.0
0969532 0.00252648
0.00
27868
8 0.0
097214
4 0.00148972 0.002
15428
0.00
713602 0.00559849
0.0049
55
17 0.00
457118 0.00323767 0.01257406
0.00
120179 0.00514838 0.00130655
0.0
1724
46
5
0.00
343819 0.00420962
0.00
297617 0.00588287
0.006
57206
0.00
775082
0.007
58217
0.00
4337
76
0.0
0576829
0.004
6
459
5
0.00
307274 0.00585795
0.007
45881
0.00238803
0.00
230431 0.00437046 0.00492464 0.00275414
0.01
5
24
646
0.00300867
0.0
0816665 0.00548853
0.008
74738
0.01
871498 0.00216776 0.00245196
0.00
308878 0.00646323 0.01287978 0.00911384 0.01628604
0.0009367
0.00
222119 0.00864202 0.01199119 0.01126539
0.010
86846
0.00
309224
0.00
20319
0.006
59422
0.002
26965
0.01
34399 0.01094141 0.00732916
0.00
489314 0.0030402
0.0
0783914 0.00278588
]
References
----------
...
...
@@ -259,23 +259,23 @@ def betweenness(g, vprop=None, eprop=None, weight=None, norm=True):
>>> g = gt.random_graph(100, lambda: (poisson(3), poisson(3)))
>>> vb, eb = gt.betweenness(g)
>>> print vb.a
[ 0.0
2412512 0.08233748 0.01789612 0.03997773
0. 0.0
3476439
0.0
3
490
215
0.0
2812729 0.05385124
0.016
14861 0.01894254 0.03552189
0.0
1648793 0.02743878 0.02243743 0.0052126
0. 0.0
2648145
0.05
045875 0.01670867 0.00027069 0.00235053
0. 0.00
424986
0.0
2153982 0.01635659
0.03
17769
2 0.00
152088 0.02099129 0.05311383
0.0
0802715
0. 0.0
6129706 0.03148129 0.10265395 0.02762436
0.0
5323276 0.028209 0.01641328 0.03547918
0. 0.00
998142
0.01
043084 0.06810444 0.01435047 0.02884138
0. 0.0
2336079
0. 0.0
9098673 0.02911358 0.05909676 0.01314448 0.0304931
0.0
1315283 0.03795536 0.02756845 0.02065
5
0.0
0268
18
2
0.0
15129
8
0.0
5597887 0.04095171 0.00853146 0.06176456
0.03
165
42
9
0.
0.0114488
0.0
5435076
0.040
46437
0.012
2299
0.0
3417369 0. 0.05979601
0.0
1502672 0.05908044 0.09567821 0.01206665 0.01259951 0.02381255
0. 0.0
184035
9 0.007
08731 0.
0. 0.
01274922
0.0
0385357 0.
0.
1
14
70908 0.04903743 0.03336991 0.01270614
0.004
48173 0.02163365 0.06685948 0.01032924 0.02400925 0. 0.0300603
0.
03220004 0.03932736
]
[ 0.0
4889806 0.07181892 0.0256799 0.02885791
0. 0.0
5060927
0.0
4
490
836
0.0
3763462 0.02033383
0.0
3
16
3202 0.02641248 0.03171598
0.0
3771112 0.02194663 0.0374907 0.01072567
0. 0.0
3079281
0.05
409258 0.00163434 0.00051978 0.01045902
0. 0.00
796784
0.0
494527 0.00647576
0.03
70825
2 0.00
304503 0.0663657 0.03903257
0.0
3305169
0. 0.0
7787098 0.03938866 0.08577116 0.020183
0.0
6024004 0.01004935 0.0443127 0.06397736
0. 0.00
363548
0.01
742486 0.03216543 0.01918144 0.02059159
0. 0.0
1476213
0. 0.0
466751 0.01072612 0.10288046 0.00563973 0.03850413
0.0
0629595 0.01292137 0.0537963 0.0445498
5 0.0
12270
18 0.0
072948
8
0.0
2092959 0.02308238 0.00712703 0.02193975
0.03
8233
42 0.
0.0
0995364
0.040
23839
0.0
3
12
708
0.0
111312 0.00228516 0.
0.0
9659583 0.01327402 0.05792071 0.08606828 0.0143541 0.00221604
0.02144698
0. 0.0
402387
9 0.007
15758
0. 0.
0.0
2348452 0.00760922
0.
0
14
86521 0.08132792 0.0382674 0.03078318
0.004
30209 0.01772787 0.02280666 0.0373011 0.03077511 0.02871265
0.
0.01044655 0.04415432 0.04447525
]
References
----------
...
...
@@ -341,7 +341,7 @@ def central_point_dominance(g, betweenness):
>>> g = gt.random_graph(100, lambda: (poisson(3), poisson(3)))
>>> vb, eb = gt.betweenness(g)
>>> print gt.central_point_dominance(g, vb)
0.0
88858856518
4
0.0
76647340863
4
References
----------
...
...
@@ -419,25 +419,25 @@ def eigenvector(g, weight=None, vprop=None, epsilon=1e-6, max_iter=None):
>>> w.a = random(g.num_edges()) * 42
>>> x = gt.eigenvector(g, w)
>>> print x[0]
0.01
44966901652
0.01
60851991895
>>> print x[1].a
[ 0.
06930562 0.15259089 0.02186899
0.
166
053
89
0. 0.
03329417
0.
15389839 0.05956241 0.02364241 0.14555449 0.12223866 0.04284837
0.0
2930074
0.
1
23
6223
5 0.0
8914056 0.06613553 0.04127041 0.06894616
0.
11768146 0.10576438 0.03184658 0.01097733
0. 0.00
244834
0.1
2373674 0.04521477 0.067292
61 0. 0.
0119752 0.09613809
0.0
5371652 0.0760725 0.26342747
0.069
01843 0.12261332
0.0
7428021
0.
16074381 0.04316101 0.01382325 0.07976272
0. 0.0
2358784
0.04
087066 0.22404933 0.05037626 0.07311321 0.00118498 0.10162138
0.0
0695398 0.15475802 0.03601454 0.12771193 0.00204537 0.00850904
0.0
6338004 0.11785637 0.171928 0.00577511 0.08163299 0.02358024
0.
25112631 0.05618482 0.00868661 0.15998601 0.11513557
0.
0.0
7307
99
1
0.0
6984483 0.1043859 0.15786829 0.12612902
0.
0.
11247494 0.06210605 0.07547538 0.09774456 0.01932 0.01132741
0.0
7459586 0.14437367 0.064779
81 0.
13211211 0.04886609
0.
0.0
9
04
3424
0.
0
06
4499
4 0.
0112379
0.1
0472704 0.2077468 0.04146317
0.0
4745921 0.07442587 0.00757032 0.18575827 0.09975438
0.11
68243
6
0.
22233397 0.08072367 0.13527766 0.1605093
6]
[ 0.
1376411 0.07207366 0.02727508
0.
058
053
04
0. 0.
10690994
0.
04315491 0.01040908 0.02300252 0.08874163 0.04968119 0.06718114
0.0
5526028 0.20449371
0.
0
23
3742
5 0.0
7581173 0.19993899 0.14718912
0.
08464664 0.08474977 0. 0.04843894
0. 0.00
89388
0.1
6831573 0.00138653 0.11741
61
6
0. 0.
13455019 0.03642682
0.0
6729803 0.06229526 0.08937098
0.0
5
69
3976 0.0793375
0.0
4076743
0.
22176891 0.07717256 0.00518048 0.05722748
0. 0.0
0055799
0.04
541778 0.06420469 0.06189998 0.08011859 0.05377224 0.29979873
0.0
1211309 0.15503588 0.02804072 0.1692873 0.01420732 0.02507
0.0
2959899 0.02702304 0.1652933 0.01434992 0.1073001 0.04582697
0.
04618913 0.0220902 0.01421926 0.09891276 0.04522928
0.
0.0
02365
99 0.0
7686829 0.03243909 0.00346715 0.1954776
0.
0.
25583217 0.11710921 0.07804282 0.21188464 0.04800656 0.00321866
0.0
552824 0.11204116 0.11420
81
8
0.
24071304 0.15451676
0.
0.004
75456
0.
1
06
8043
4 0.
17054333
0.1
8945499 0.15673649 0.03405238
0.0
1653319 0.02563015 0.00186129 0.12061027 0.11449362
0.11
1
1419
6
0.
06779788 0.00595725 0.09127559 0.0238038
6]
References
----------
...
...
@@ -525,23 +525,31 @@ def eigentrust(g, trust_map, vprop=None, norm=False, epsilon=1e-6, max_iter=0,
>>> trust.a = random(g.num_edges())*42
>>> t = gt.eigentrust(g, trust, norm=True)
>>> print t.a
[ 0.01047704 0.00916079 0.00329728 0.02183509 0. 0.00570515
0.01795154 0.00745325 0.01556352 0.02103068 0.00766733 0.0017898
0.00477604 0.02075469 0.00596795 0.00777273 0.00486571 0.00922539
0.00947171 0.00808096 0.00159634 0.00039577 0. 0.00170102
0.01221233 0.00105577 0.00499953 0. 0.00104692 0.02124238
0.00460677 0.02377163 0.03682221 0.00788995 0.01588396 0.01090949
0.01738658 0.00629269 0.00252249 0.01494837 0. 0.00118236
0.00086828 0.04746846 0.01541295 0.00777287 0.00014366 0.01079173
0.00025071 0.0110701 0.0041122 0.00931269 0.0003396 0.00085525
0.00715489 0.01178172 0.01968206 0.00086696 0.01155932 0.01291423
0.03650986 0.00409654 0.00635913 0.02706258 0.01329375 0. 0.004781
0.00393831 0.0159743 0.01175119 0.01924371 0. 0.01624875
0.01213196 0.01327894 0.02122698 0.01120801 0.00261826 0.01197119
0.01071532 0.01065604 0.00891656 0.00394593 0. 0.00519856
0.00013063 0.00206336 0.01471883 0.02029324 0.00793793 0.00560927
0.00944371 0.00205155 0.01610597 0.009506 0.0211548 0.01688137
0.00731456 0.0175582 0.02643281]
[ 1.12095562e-02 3.97280231e-03 1.31675503e-02 9.61282478e-03
0.00000000e+00 1.73295741e-02 3.53395497e-03 1.06203582e-02
1.36906165e-03 8.64587777e-03 1.12049516e-02 3.18891993e-03
9.28265221e-03 2.25294315e-02 3.24795656e-03 9.16555333e-03
5.68412465e-02 6.79686311e-03 6.37474649e-03 6.04696712e-03
0.00000000e+00 8.51131034e-03 0.00000000e+00 1.09336777e-03
1.49885187e-02 1.09327367e-04 3.73928902e-02 0.00000000e+00
1.74638522e-02 8.21101864e-03 5.79876899e-03 1.34905262e-02
1.71525132e-02 2.25425503e-02 1.04184903e-02 1.05537922e-02
1.34096247e-02 2.82760533e-03 4.31713918e-04 7.39114668e-03
0.00000000e+00 2.21328121e-05 8.79050007e-03 7.08148889e-03
5.88651144e-03 7.45401425e-03 5.66098580e-03 2.80738199e-02
2.41472197e-03 1.00673881e-02 2.29910658e-03 3.23790630e-02
3.02136064e-03 2.25030440e-03 3.53325357e-03 6.90672383e-03
1.01692058e-02 1.03783022e-02 1.22476413e-02 4.82453065e-03
1.15878890e-02 3.41943633e-03 1.57958469e-03 6.56648121e-03
1.28152141e-02 0.00000000e+00 1.29192164e-03 9.35867476e-03
3.89329603e-03 1.78002682e-03 2.81987911e-02 0.00000000e+00
1.74943514e-02 6.24079508e-03 1.57572103e-02 3.77119257e-02
4.78552984e-03 3.30463136e-04 5.60118687e-03 5.75656186e-03
2.65412905e-02 1.59663210e-02 2.88844192e-02 0.00000000e+00
7.87754853e-04 1.76957899e-02 3.19907905e-02 1.94650690e-02
1.32052233e-02 3.57577093e-03 7.09968545e-04 8.70787481e-03
1.24901391e-04 2.61215462e-02 2.25923034e-02 1.10928239e-02
9.39210737e-03 5.61073138e-04 1.59987179e-02 3.02799309e-03]
References
----------
...
...
@@ -643,23 +651,31 @@ def trust_transitivity(g, trust_map, source=None, target=None, vprop=None):
>>> trust.a = random(g.num_edges())
>>> t = gt.trust_transitivity(g, trust, source=g.vertex(0))
>>> print t.a
[ 1. 0.05067451 0.0289009 0.08405839 0. 0.03545782
0.07538031 0.22379499 0.05854478 0.07125532 0.05587198 0.02518448
0.02466963 0.15362921 0.06018343 0.05567524 0.27358358 0.05275904
0.03729045 0.09492006 0.05238415 0.00737096 0. 0.00510552
0.08817629 0.03785795 0.02446122 0. 0.00738919 0.05119031
0.34527065 0.03114924 0.07197484 0.47425602 0.03472084 0.04662672
0.05560849 0.02364994 0.01215894 0.31788601 0. 0.03879942
0.01857147 0.06889803 0.04377159 0.08730759 0.00246369 0.39098931
0.0046694 0.04502054 0.02463968 0.02645761 0.00707666 0.00472783
0.02984028 0.1148617 0.0572029 0.00675625 0.02800698 0.12556046
0.08124247 0.05626964 0.06027068 0.04269226 0.07518783 0.
0.02654427 0.013547 0.35126413 0.05338214 0.02683736 0.
0.03967174 0.15764245 0.03434911 0.06712879 0.01081633 0.01438191
0.22453002 0.13426137 0.11622003 0.18696878 0.02270863 0.
0.09096154 0.00622639 0.01807092 0.06891202 0.05429632 0.03123112
0.04239384 0.06347529 0.00980117 0.08103904 0.06022526 0.09774797
0.0442361 0.03511221 0.09291923 0.10395899]
[ 1.00000000e+00 9.59916062e-02 4.27717883e-02 7.70755875e-02
0.00000000e+00 2.04476926e-01 5.55315822e-02 2.82854665e-02
5.08479257e-02 1.68128402e-01 3.28567434e-02 7.39525583e-02
1.34463196e-01 8.83740756e-02 1.79990535e-01 7.08809615e-02
6.37757645e-02 7.24187957e-02 4.83082241e-02 9.90676983e-02
0.00000000e+00 6.50497060e-02 0.00000000e+00 1.77344948e-02
1.08677897e-01 1.00958718e-03 4.49524961e-02 0.00000000e+00
1.64902280e-01 4.31492976e-02 2.19446085e-01 3.00890381e-02
6.86750847e-02 2.72460575e-02 3.57314594e-02 4.87776483e-02
4.11748930e-01 7.91396467e-02 2.54835127e-03 3.01711432e-01
0.00000000e+00 4.14406224e-04 4.24794624e-02 9.14096554e-02
4.17528677e-01 3.79112573e-02 1.16489950e-01 5.18112902e-02
8.49111259e-03 5.26399996e-02 2.45690139e-02 7.51435125e-02
5.62381854e-02 2.90115777e-02 2.72543383e-02 1.46877163e-01
7.81446822e-02 1.24417763e-02 1.01337976e-01 9.92776442e-02
3.14622176e-02 1.20097319e-01 3.30335980e-02 4.61757040e-02
1.01085599e-01 0.00000000e+00 4.44660446e-03 6.31066845e-02
1.94702084e-02 8.45343379e-04 4.82190327e-02 0.00000000e+00
6.60346087e-02 7.44581695e-02 6.19535229e-02 1.82072422e-01
1.45366611e-02 2.59020075e-02 2.52208295e-02 6.80519730e-02
6.74671969e-02 1.14198914e-01 5.12493343e-02 0.00000000e+00
6.33427008e-03 1.42290348e-01 6.90459437e-02 1.00565411e-01
5.88966867e-02 3.28157280e-02 2.80046903e-02 2.41520032e-01
8.45879329e-04 6.76633672e-02 6.05080467e-02 9.12575826e-02
1.97789973e-02 6.40885493e-02 4.80934526e-02 1.28787181e-02]
References
----------
...
...
src/graph_tool/clustering/__init__.py
View file @
990b4739
...
...
@@ -115,7 +115,7 @@ def local_clustering(g, prop=None, undirected=True):
>>> g = gt.random_graph(1000, lambda: (5,5))
>>> clust = gt.local_clustering(g)
>>> print gt.vertex_average(g, clust)
(0.00
833
8888888888889, 0.0004
126098432127491
)
(0.00
90
8888888888889, 0.0004
449824521439575
)
References
----------
...
...
@@ -172,7 +172,7 @@ def global_clustering(g):
>>> seed(42)
>>> g = gt.random_graph(1000, lambda: (5,5))
>>> print gt.global_clustering(g)
(0.00
8353381448810478, 0.00041351594365452094
)
(0.00
9114059777509717, 0.0004464454368899158
)
References
----------
...
...
@@ -247,11 +247,11 @@ def extended_clustering(g, props=None, max_depth=3, undirected=False):
>>> for i in xrange(0, 5):
... print gt.vertex_average(g, clusts[i])
...
(0.00
612
000000000000
04
, 0.0004
859481453817887
)
(0.02
4368333333333332, 0.0009455588573842338
)
(0.11
54
833333333333
4
, 0.0020
091290954595783
)
(0.3
9994
33333333333, 0.0030
7
20
255912562527
)
(0.4
3571666666666664, 0.00311271991637181
77)
(0.00
5885
000000000000
5
, 0.0004
726257592782405
)
(0.02
6346666666666668, 0.0009562588213100747
)
(0.11
638
833333333333, 0.0020
86419787711849
)
(0.3
8625
33333333333, 0.003020
064612995335
)
(0.4
4685499999999995, 0.003124572962377
77
4
)
References
----------
...
...
@@ -324,7 +324,7 @@ def motifs(g, k, p=1.0, motif_list=None):
>>> print len(motifs)
11
>>> print counts
[11
6256, 392719, 335, 380, 295
4, 8
5
0,
808, 1, 11, 4, 1
]
[11
5104, 389090, 72
4, 8
2
0,
1828, 3208, 791, 4, 12, 12, 3
]
References
...
...
@@ -489,7 +489,7 @@ def motif_significance(g, k, n_shuffles=100, p=1.0, motif_list=None,
>>> print len(motifs)
11
>>> print zscores
[0.
37033485499317
503, 0.
2502032768488251, 0.11813557960717248, -0.64062741073137097
,
-
0.
6280946022901569
,
-
0.
36863102213820809
, 0.
54809736376108453, 1.89
, 0.
87
, -0.
48
, -0.1
9
]
[0.
01487555379254
50
8
3, 0.
016154998074953769, 0.002455801898331304, -1.9579019397305546
, 0.
83542298414538518
, 0.
84715258999068244
,
-
0.
93385230436820643, -0.11
,
-
0.
1
, -0.
31
, -0.1
4
]
"""
s_ms
,
counts
=
motifs
(
g
,
k
,
p
,
motif_list
)
...
...
src/graph_tool/correlations/__init__.py
View file @
990b4739
...
...
@@ -109,7 +109,7 @@ def assortativity(g, deg):
... lambda i,k: 1.0 / (1 + abs(i - k)), directed=False,
... mix_time=100)
>>> gt.assortativity(g, "out")
(0.1
5024063611634234, 0.0051996387349654925
)
(0.1
4145218664992676, 0.005077209994557802
)
References
----------
...
...
@@ -179,13 +179,13 @@ def scalar_assortativity(g, deg):
>>> g = gt.random_graph(1000, lambda: sample_k(40), lambda i,k: abs(i-k),
... directed=False, mix_time=100)
>>> gt.scalar_assortativity(g, "out")
(-0.4
5
697
07008340512, 0.010227503673605132
)
(-0.4697
2665544654923, 0.010035656615797507
)
>>> g = gt.random_graph(1000, lambda: sample_k(40),
... lambda i, k: 1.0 / (1 + abs(i - k)),
... directed=False, mix_time=100)
>>> gt.scalar_assortativity(g, "out")
(0.
5921961942149022, 0.011625836226217939
)
(0.
6120658464996896, 0.011388445161055338
)
References
----------
...
...
src/graph_tool/generation/__init__.py
View file @
990b4739
...
...
@@ -181,7 +181,7 @@ def random_graph(N, deg_sampler, deg_corr=None, directed=True,
... lambda i, k: 1.0 / (1 + abs(i - k)), directed=False,
... mix_time=100)
>>> gt.scalar_assortativity(g, "out")
(0.6
27
97
7
16
09121966
, 0.010
9
42
827982112517
)
(0.6
4356586
9716
3692
, 0.01042
0519538259333
)
The following samples an in,out-degree pair from the joint distribution:
...
...
src/graph_tool/spectral/__init__.py
View file @
990b4739
...
...
@@ -84,12 +84,12 @@ def adjacency(g, sparse=True, weight=None):
>>> m = gt.adjacency(g)
>>> print m.todense()
[[ 0. 0. 0. ..., 0. 0. 0.]
[ 1. 0. 1. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
...,
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 1. 0. 0.]
[ 0. 0. 1. ..., 0. 0. 0.]]
...,
[ 0. 0. 0. ..., 0. 0. 1.]
[ 0. 0. 1. ..., 0. 0. 0.]
[ 0. 1. 0. ..., 0. 0. 0.]]
References
----------
...
...
@@ -192,12 +192,12 @@ def laplacian(g, deg="total", normalized=True, sparse=True, weight=None):
>>> m = gt.laplacian(g)
>>> print m.todense()
[[ 1. 0. 0. ..., 0. 0. 0. ]
[ 0.
05
1. 0.
05
..., 0. 0. 0. ]
[ 0.
1. 0.
..., 0. 0. 0. ]
[ 0. 0. 1. ..., 0. 0. 0. ]
...,
[ 0. 0. 0. ..., 1. 0. 0.
]
[ 0. 0. 0.
..., 0.
05
1. 0. ]
[ 0. 0.
0.
05
..., 0. 0. 1. ]]
[ 0. 0. 0. ..., 1. 0. 0.
05
]
[ 0. 0. 0.
05
..., 0.
1. 0. ]
[ 0. 0.
05
0.
..., 0. 0. 1. ]]
References
----------
...
...
src/graph_tool/stats/__init__.py
View file @
990b4739
...
...
@@ -371,12 +371,10 @@ def distance_histogram(g, weight=None, bins=[0, 1], samples=None,
>>> g = gt.random_graph(100, lambda: (3, 3))
>>> hist = gt.distance_histogram(g)
>>> print hist
[array([ 0.00000000e+00, 3.00000000e+02, 8.44000000e+02,
2.12300000e+03, 3.76100000e+03, 2.62500000e+03,
2.46000000e+02, 1.00000000e+00]), array([0, 1, 2, 3, 4, 5, 6, 7, 8], dtype=uint64)]
[array([ 0., 300., 861., 2165., 3801., 2576., 197.]), array([0, 1, 2, 3, 4, 5, 6, 7], dtype=uint64)]
>>> hist = gt.distance_histogram(g, samples=10)
>>> print hist
[array([ 0., 30., 8
3
., 21
3
., 3
77
., 2
57
., 3
0
.]), array([0, 1, 2, 3, 4, 5, 6, 7], dtype=uint64)]
[array([ 0., 30., 8
7
., 2
2
1., 3
95
., 2
34
.,
2
3.]), array([0, 1, 2, 3, 4, 5, 6, 7], dtype=uint64)]
"""
if
samples
!=
None
:
...
...
src/graph_tool/topology/__init__.py
View file @
990b4739
...
...
@@ -173,7 +173,7 @@ def subgraph_isomorphism(sub, g, max_n=0, random=True):
>>> sub = gt.random_graph(10, lambda: (poisson(1.8), poisson(1.9)))
>>> vm, em = gt.subgraph_isomorphism(sub, g)
>>> print len(vm)
118
79
>>> for i in xrange(len(vm)):
... g.set_vertex_filter(None)
... g.set_edge_filter(None)
...
...
@@ -386,10 +386,9 @@ def dominator_tree(g, root, dom_map=None):
>>> root = [v for v in g.vertices() if v.in_degree() == 0]
>>> dom = gt.dominator_tree(g, root[0])
>>> print dom.a
[ 0 0 33 81 0 6 0 0 0 0 0 33 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 67 0 0 5 0 0 81 0 0 0 0 87 0 0 0 0 0 0 0 0 0 0 0
0 80 0 0 0 0 0 99 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0
0 0 0 0 0 0 5 11 0 0 0 0 88 30 0 0 0 0 0 0 0 0 0 0 84]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
References
----------
...
...
@@ -431,8 +430,8 @@ def topological_sort(g):
>>> g.set_edge_filter(tree)
>>> sort = gt.topological_sort(g)
>>> print sort
[ 0
1
2 15
3 4
2
5
5
6 7 28 14 29 26 12
2
4
8
9
1
0
1
1 13
16 17
18 19
2
7 20 21
2
2
2
3
]
[
3 2
0
9
2
9
15
0 10
2
3
1
2 21 7 4 12 11 5 26
2
7
6
8
1
3
1
4 22
16 17
2
8 18 19
2
4
2
5
]
References
----------
...
...
@@ -521,11 +520,11 @@ def label_components(g, vprop=None, directed=None):
>>> g = gt.random_graph(100, lambda: (1, 1))
>>> comp, hist = gt.label_components(g)
>>> print comp.a
[0
1
0 1
1 1 2 1 1 1
0
1
0
1
0 0
1 0
1 0
3
0 1 0 1 0
4 3 0 0 0 0 1 1 0 4 1
1 1 1 3 1
0 2
1 1
0
1
0 0 0
1 1
0 0 1
3 1 1 1
1
1
0
1
2
1 1 1
1
0
1 0 0
1
0
3
1
1 1
1 2
3 1 3
0
1
0 0
1
0 0 0 1 1 0
3 1 4 1 1
]
[0
0
0 1
0 2 0 0 0
0
2
0 0 0
2
1 0
2
0 1
2
0 1 0
0 1 0 2 0 2 1 0 2 0 0 0 0
0 0 1 0
0 2
2 2
0
0
0 0 0
0 2
0 0 1
1 0 0 2 0
1
0
0
0
2
0 0 2 2
1
2
1 0 0
2
0
0
1
2
1 2
2 0
0
0
0 0
2
0 0 0 1 1 0
0 0 1 1 2 2
]
>>> print hist
[
35 50 4 8 3
]
[
58 18 24
]
"""
if
vprop
is
None
:
...
...
@@ -573,12 +572,12 @@ def label_largest_component(g, directed=None):
>>> g = gt.random_graph(100, lambda: poisson(1), directed=False)
>>> l = gt.label_largest_component(g)
>>> print l.a
[0 0 0
1
0
1
0 0 1 1 0 1
1
0 0 0 0
1
1 0 0 1 1
0 1 0 0
1 1 0 0 0 1 0
1
0 0
1 1
1 1
0
1
1 0 1 1 0
1
0 1 1 0 0 1 1 0 0 0
1
0 0 1
1 1 1
1 0 0
1
0 0
1 1
0
1
0
0
1 0 1 1
1 1 1
0 0 1 1 0 1 0 1 0 1 0 0
1
0 0]
[
1
0 0 0 0
0
0 0 1 1 0 1
0
0 0 0 0
0
1 0 0 1 1 1 1 0 0 0 1 0
0 0
0 0
0 0 1
1 1
0 0
0
0
1 0 1 1 0
0
0 1 1 0 0 1 1 0 0 0
0
0 0 1
0
1 0 0
0 0 0
0 0
0 0
0
0
0
1
1 0 1 1
0 0 0
0 0 1 1 0 1 0 1 0 1 0 0
0
0 0]
>>> u = gt.GraphView(g, vfilt=l) # extract the largest component as a graph
>>> print u.num_vertices()
50
31
"""
label
=
g
.
new_vertex_property
(
"bool"
)
...
...
@@ -648,16 +647,15 @@ def label_biconnected_components(g, eprop=None, vprop=None):
>>> g = gt.random_graph(100, lambda: 2, directed=False)
>>> comp, art, hist = gt.label_biconnected_components(g)
>>> print comp.a
[0
1 1
0 0 0 0 0 0
2 2
0 0 0 0 0
1 2
0 0 0 0 0 0 0 0 0 0
2 0 1 0 0 0 0
0 0
1
0
0
0 0 1 0 0 0 1 0
1
0 0 0 0 0 0 0
1
0 0 0 0 0 0 1 0 0 1 0 0 0 0
0 0 0
0 0 0 0 0 0 0
0 0 0
0 1 0 0 0 0 0 0 0 0
0
0 1 0 0 0]
[0
0
0 0 0 0 0 0
0 0 0
0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 1
0 0
0
0
1
0 0 1 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0
0 0 0 0 0 0 1 0 0
0
1 0 0 0 0
1
0 0 0 0 0 0 0
1
0 1 0 0 0 0 0 0 0 0
1
0 1 0 0
0 0
0]
>>> print art.a
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
>>> print hist
[83 13 4]
[87 13]