-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
274 lines (223 loc) · 17.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>NetworKit</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css?v=fa2d15c4" />
<link rel="stylesheet" href="_static/style.css" type="text/css" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=b3ba4146"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<script src="_static/particles.min.js"></script>
<script src="_static/custom.js"></script>
<script src="_static/publications.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes">
<script type="text/javascript" src="_static/bootstrap-3.4.1/js/bootstrap.min.js "></script>
<script type="text/javascript" src="_static/custom-bootstrap-sphinx.js "></script>
</head><body>
<a href="https://github.com/networkit/networkit"
class="visible-desktop hidden-xs"><img style="position: absolute; width:auto; height: auto; max-width: 200px; top:
0px; right: 0; border: 0; z-index: 3;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png" alt="Fork me on GitHub"></a>
<div id="fancy-particles"></div>
<div id="home_navbar" class="home_navbar navbar-default ">
<div class="container">
<div class="navbar-header">
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div style="float:left;height:auto; line-height:30px;">
<div style="overflow:hidden; line-height:15px">
<span style="display:block">
<a style="text-decoration: none; padding-top: 19.5px; padding-left:0px; height:30px;" class="navbar-brand" href="#">
NetworKit</a>
</span>
<div style="font-size:9pt; clear:left;">Large-Scale Network Analysis</div>
</div>
</div>
</div>
<div id="main-nav" class="collapse navbar-collapse nav-collapse">
<ul class="nav navbar-nav">
<li><a href="get_started.html">Get Started</a></li>
<li><a href="dev-docs/index.html">Documentation</a></li>
<li><a href="features.html">Features</a></li>
<li><a href="news.html">News</a></li>
<li><a href="publications.html">Publications</a></li>
<li><a href="networkit-day.html">NetworKit Day</a></li>
<li><a href="credits.html">Credits & References</a></li>
</ul>
<form class="navbar-form navbar-right" action="search.html" method="get">
<div class="form-group">
<input type="text" name="q" class="form-control" placeholder="Search" />
</div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="welcome-index" style="text-align: center; padding-top: 30px; padding-bottom: 10px;">
<img class="logo-index" src="_static/logo_bw_inv.png"><br><p style="margin: 10px"></p>
<a class="customButton" href="get_started.html">Get Started</a>
<a class="customButton" href="https://networkit.github.io/dev-docs/notebooks/User-Guide.html">User Guide</a>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12 content">
<section class="Top_Section" style="clear: both; border-bottom: 1px solid #d4d7d9;">
<div class="Top_Section" style="padding-top: 30px; padding-bottom: 30px">
<div class="Introduction_Text" style="border-right: 1px solid #d4d7d9; display: table-cell; width: 66.66%; padding-right: 30px; text-align: justify"><p><strong>NetworKit</strong> is a growing open-source toolkit for large-scale network analysis. Its aim is to provide tools for the analysis of large networks in the size range from thousands to billions of edges. For this purpose, it implements efficient graph algorithms, many of them parallel to utilize multicore architectures. These are meant to compute standard measures of network analysis, such as degree sequences, clustering coefficients, and centrality measures. In this respect, NetworKit is comparable to packages such as NetworkX, albeit with a focus on parallelism and scalability. NetworKit is also a testbed for algorithm engineering and contains novel algorithms from recently published research (see list of <a class="reference internal" href="publications.html#publications"><span class="std std-ref">Publications</span></a>).</p>
<p><strong>NetworKit</strong> is a Python module. Performance-aware algorithms are written in C++ (often using OpenMP for shared-memory parallelism) and exposed to Python via the Cython toolchain. Python in turn gives us the ability to work interactively and with a rich environment of tools for data analysis. Furthermore, NetworKit’s core can be built and used as a native library.</p>
<div style="float: left; display: table-cell; width: 80%; padding-right: 30px">
</div>
</div>
<div class="Downloads" style="display: table-cell; width: 33.33%; padding-left: 30px">
<div>Clone from GitHub</div>
<span style="display: block;overflow: hidden;"><input onClick="this.setSelectionRange(0, this.value.length)" style="width: 100%" type="text" value="git clone https://github.com/networkit/networkit.git" readonly=""/></span>
<div style="padding-top: 15px">Install via pip3</div>
<span style="display: block;overflow: hidden;"><input onClick="this.setSelectionRange(0, this.value.length)" style="width: 100%" type="text" value="pip3 install networkit" readonly=""/></span>
<div style="padding-top: 15px">Download as <a href="https://github.com/networkit/networkit/archive/7.1.zip">zip file (from GitHub)</a></div>
<div style="padding-top: 15px">Download the <a href="http://arxiv.org/pdf/1403.3005v3.pdf">Technical Report</a></div>
<div style="padding-top: 15px;"> <div style="float: left;">Mailing List</div> <div><a style="padding-left: 10px" href="https://sympa.cms.hu-berlin.de/sympa/subscribe/networkit"><img style="padding-bottom:2px" src="_static/mailinglist.png"></a> </div> </div>
<div style="padding-top: 15px">View the <a href="https://sympa.cms.hu-berlin.de/sympa/arc/networkit">mailing list archive</a></div>
<div style="padding-top: 15px"><a href="https://github.com/networkit/networkit/blob/master/notebooks/User-Guide.ipynb">NetworKit User Guide</a></div>
</div>
</div>
</section>
<section class="MainFeatures" style="clear: both; padding-top: 20px; padding-bottom: 0px;">
<div class="FeatureTable" >
<div style="text-align: center; font-size:16pt; font-weight: bold; padding-bottom: 20px;">Main Design Goals</div>
<div style="border-right: 1px solid #d4d7d9; display: table-cell; width: 33.33%; padding: 20px; padding-bottom: 0px;">
<p style="text-align: center; font-size:14pt">Interactive Workflow</p>
<p style="word-break: normal; text-align:justify;">
NetworKit takes inspiration from other software like R, MATLAB or Mathematica and provides an interactive shell via Python. This allows users to
freely combine functions from NetworKit and also use the results with other popular Python packages. In combination with Jupyter Notebook, NetworKit
provides an intuitive computing environment for scientific workflows, even on a remote compute server.
</p>
</div>
<div style="border-right: 1px solid #d4d7d9; display: table-cell; width: 33.33%; padding: 20px; padding-bottom: 0px;">
<p style="text-align: center; font-size:14pt">High Performance</p>
<p style="word-break: normal; text-align:justify;">
In NetworKit, algorithms and data structures are selected and implemented with a combination of good software engineering as well as high performance and parallelism in mind. Some implementations are
among the fastest in published research. For example, community detection in a 3 billion edge web graph can be performed on a 16-core server
in a matter of a few minutes.
</p>
</div>
<div style="display: table-cell; width: 33.33%; padding: 20px; padding-bottom: 0px;">
<p style="text-align: center; font-size:14pt">Easy Integration</p>
<p style="word-break: normal; text-align:justify;">
As a Python module, NetworKit enables seamless integration with Python libraries for scientific computing and data analysis, e.g. pandas for data framework
processing and analytics, matplotlib for plotting, networkx for additional network analysis tasks, or numpy and scipy for numerical and scientific computing.
Furthermore, NetworKit aims to support a variety of input/output formats.
</p>
</div>
</div>
</section>
<section class="FeatureImages" style="clear: both; padding-top: 0px; padding-bottom: 0px;">
<div class="FeatureTable" >
<div style="border-right: 1px solid #d4d7d9; display: table-cell; width: 33.33%; padding: 20px; padding-bottom: 0px;">
<div style="border-top: 1px solid #d4d7d9; margin-left: 40px; margin-right: 40px; padding-bottom: 30px;"></div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">networkit</span> <span class="kn">import</span> <span class="o">*</span>
<span class="n">G</span> <span class="o">=</span> <span class="n">readGraph</span><span class="p">(</span><span class="s2">"skitter.graph"</span><span class="p">,</span> <span class="n">Format</span><span class="o">.</span><span class="n">METIS</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">G</span><span class="o">.</span><span class="n">toString</span><span class="p">())</span>
</pre></div>
</div>
<pre class="codeSpan">'Graph(name=skitter, n=1696415, m=11095298)'</pre><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cc</span> <span class="o">=</span> <span class="n">components</span><span class="o">.</span><span class="n">ConnectedComponents</span><span class="p">(</span><span class="n">G</span><span class="p">)</span>
<span class="n">cc</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
<span class="n">compSizes</span> <span class="o">=</span> <span class="n">cc</span><span class="o">.</span><span class="n">getComponentSizes</span><span class="p">()</span>
<span class="n">numCC</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">compSizes</span><span class="p">)</span>
<span class="n">maxCC</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">compSizes</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"#cc = </span><span class="si">%d</span><span class="s2">,largest = </span><span class="si">%d</span><span class="s2">"</span><span class="o">%</span><span class="p">(</span><span class="n">numCC</span><span class="p">,</span><span class="n">maxCC</span><span class="p">))</span>
</pre></div>
</div>
<pre class="codeSpan">#cc = 756,largest = 1694616</pre>
</div>
<div style="border-right: 1px solid #d4d7d9; display: table-cell; width: 33.33%; padding: 20px; padding-bottom: 0px;">
<div style="border-top: 1px solid #d4d7d9; margin-left: 40px; margin-right: 40px; padding-bottom: 30px;"></div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">communities</span> <span class="o">=</span> <span class="n">community</span><span class="o">.</span><span class="n">detectCommunities</span><span class="p">(</span><span class="n">G</span><span class="p">)</span>
</pre></div>
</div>
<pre class="codeSpan" style="padding: 8px;">
PLM(balanced,pc) detected communities in 17.86 [s]
solution properties:
------------------- -------------
# communities 1637
min community size 2
max community size 233061
avg. community size 1036.3
modularity 0.825245
------------------- -------------
</pre>
</div>
<div style="display: table-cell; width: 33.33%; padding: 20px; padding-bottom: 0px;">
<div style="border-top: 1px solid #d4d7d9; margin-left: 40px; margin-right: 40px; padding-bottom: 30px;"></div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">sizes</span> <span class="o">=</span> <span class="n">communities</span><span class="o">.</span><span class="n">subsetSizes</span><span class="p">()</span>
<span class="n">sizes</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">reverse</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xscale</span><span class="p">(</span><span class="s2">"log"</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">"community id"</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">yscale</span><span class="p">(</span><span class="s2">"log"</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">"size"</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">sizes</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
</section>
<section class="ExampleTexts" style="clear: both; padding-top: 0px; padding-bottom: 20px;">
<div class="FeatureTable" >
<div style="border-right: 1px solid #d4d7d9; display: table-cell; width: 33.33%; padding: 20px; padding-bottom: 0px;">
<div style="border-top: 1px solid #d4d7d9; margin-left: 40px; margin-right: 40px; padding-bottom: 30px;"></div>
<p style="word-break: normal; text-align:justify;">
Using NetworKit is as simple as importing the networkit Python package. In the example above, we then read a network of autonomous
systems from disk and print some very basic statistics about the network. We go on by computing the connected components and outputting their number
and size.
</p>
</div>
<div style="border-right: 1px solid #d4d7d9; display: table-cell; width: 33.33%; padding: 20px; padding-bottom: 0px;">
<div style="border-top: 1px solid #d4d7d9; margin-left: 40px; margin-right: 40px; padding-bottom: 30px;"></div>
<p style="word-break: normal; text-align:justify;">
Continuing with the example on the left, we tell NetworKit to detect communities for the <i>skitter</i> network. Thanks to our parallel
modularity-driven community detection algorithms, this takes only about 18 seconds on a consumer notebook even though the network has more than 11 million edges.
</p>
</div>
<div style="display: table-cell; width: 33.33%; padding: 20px; padding-bottom: 0px;">
<div style="border-top: 1px solid #d4d7d9; margin-left: 40px; margin-right: 40px; padding-bottom: 30px;"></div>
<p style="word-break: normal; text-align:justify;">
Visualizing the size of the communities computed in the example in the middle is very easy due to the seamless integration of NetworKit into
the Python ecosystem. We use matplotlib to plot a log-log graph of the community sizes sorted in descending order. When using Jupyter
Notebook the resulting plot appears directly below the plot command.
</p>
</div>
</div>
</section>
</div>
</div>
</div>
<footer class="footer">
<div class="container">
<p class="pull-right">
<a href="#">Back to top</a>
<br/>
</p>
<p style="float:left; max-width: 70%;">
© Copyright 2024 Humboldt-Universität zu Berlin - Department of Computer Science - Modeling and Analysis of Complex Systems and contributors.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 7.1.2.<br/>
</p>
<span style="padding-left: 10px">
<a href="contact.html">Contact, Imprint and Privacy</a>
</span>
</div>
</footer>
</body>
</html>