
NetworKit is an open-source tool suite for high-performance 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. NetworKit is focused on scalability and comprehensiveness. NetworkIt也是算法工程的测试床,并包含来自最近发表的研究的新算法(请参见下面的出版物列表)。
NetworKit is a Python module. High-performance algorithms are written in C++ and exposed to Python via the Cython toolchain. Python in turn gives us the ability to work interactively and a rich environment of tools for data analysis and scientific computing. Furthermore, NetworKit's core can be built and used as a native library if needed.
You will need the following software to install NetworKit as a python package:
apt-get install python3-devdnf install python3-develpip3 install cmake )pip3 install cython ) 为了使用NetworkIt,您可以通过软件包管理器安装它,也可以从源构建Python模块。
虽然最新版本通常可用于所有包装管理器,但较旧的可下载版本的数量也有所不同。
pip3 install [--user] networkit
conda config --add channels conda-forge
conda install networkit [-c conda-forge]
brew install networkit
spack install py-networkit
有关如何在Linux,MacOS(Intel和M1)和Windows系统上安装网络的更多信息信息,请参见此处。
git clone https://github.com/networkit/networkit networkit
cd networkit
python3 setup.py build_ext [-jX]
pip3 install -e .
该脚本将称cmake和ninja ( make后备)作为库编译网络,构建扩展名并将其复制到顶级文件夹。默认情况下,将在优化模式下使用可用核心的数量构建NetworkIT。可能会添加选项-jN用于编译的线程数。
要获取概述并了解NetworkIt的不同功能/类,请查看我们的交互式笔记本电脑部分,尤其是网络uSerguide。注意:要查看笔记本电脑的计算输出,建议使用jupyter笔记本。这需要事先安装NetworkIT。在开始进行网络分析之前,您应该真正检查一下。
我们还提供了笔记本的结合体。要访问此服务,您可以单击顶部的徽章,也可以单击此链接。免责声明:由于基础图像的重建,可能需要一些时间,直到您的活页夹实例可以使用。
如果您只想简单地看到如何使用NetworkIT,则以下示例在此提供了攀登。在这里,我们通过100K节点生成一个随机的双曲线图,并使用PLM方法计算其社区:
>>> import networkit as nk
>>> g = nk.generators.HyperbolicGenerator(1e5).generate()
>>> communities = nk.community.detectCommunities(g, inspect=True)
PLM(balanced,pc,turbo) detected communities in 0.14577102661132812 [s]
solution properties:
------------------- -----------
# communities 4536
min community size 1
max community size 2790
avg. community size 22.0459
modularity 0.987243
------------------- -----------
如果您只想使用NetworkIt的C ++核心,则可以通过软件包管理器安装它或从源构建它。
conda config --add channels conda-forge
conda install libnetworkit [-c conda-forge]
brew install libnetworkit
spack install libnetworkit
我们建议CMAKE和您首选的构建系统,用于构建NetworkIT的C ++部分。
以下描述显示了如何使用CMAKE仅构建C ++核心:
首先,您必须创建并更改为构建目录:(在这种情况下,命名为build )
mkdir build
cd build
然后致电CMake为make Build System生成文件,并指定root CMakeLists.txt文件的目录(例如, .. )。在此之后make要求开始构建过程:
cmake ..
make -jX
为了加快制造多核机的加速汇编,您可以附加-jX ,其中x表示要编译的线程数。
本段解释了如何使用网络核心C ++库,以防它是从源头构建的。对于通过包装管理人员安装时如何使用它,最好是指官方文档(Brew,Conda,Spack)。
为了使用以前的编译网络库,您需要安装它,并在编译项目时链接它。使用这些说明在/usr/local中编译和安装网络:
cmake ..
make -jX install
安装了NetworkIT后,您可以在C ++中使用“指令”,如下所示:
#include <networkit/graph/Graph.hpp>
您可以按以下方式编译源:
g++ my_file.cpp -lnetworkit
建立和运行网络单元测试不是强制性的。但是,作为开发人员,您可能需要为您的代码编写和运行单元测试,或者如果您遇到NetworkIT的任何问题,则可能需要检查NetworkIT是否正确运行。单位测试只能从存储库的克隆或副本进行,而不是从PIP安装中进行。为了运行单元测试,您需要先对其进行编译。这是通过将CMAKE NETWORKI_BUILD_TESTS标志设置为ON来完成的:
cmake -DNETWORKIT_BUILD_TESTS=ON ..
使用GTEST宏(例如TEST_F(CentralityGTest, testBetweennessCentrality)实施单元测试。可以执行单个测试:
./networkit_tests --gtest_filter=CentralityGTest.testBetweennessCentrality
此外,可以通过添加--loglevel <log_level>来指定日志输出的级别;支持的日志级别是: TRACE , DEBUG , INFO , WARN , ERROR和FATAL 。
消毒剂是调试代码的绝佳工具。 NetworkIt提供其他CMAKE标志来启用地址,泄漏和未定义的行为消毒器。要使用消毒剂编译代码,请将CMAKE NETWORKIT_WITH_SANITIZERS设置为address或leak :
cmake -DNETWORKIT_WITH_SANITIZERS=leak ..
通过将此标志设置为address ,您的代码将与address和undefined消毒剂一起编译。将其设置为leak还增加了leak消毒剂。
该文档的最新版本可以在线找到。
有关网络的问题,请查看我们的问题部分,看看是否已经进行了公开讨论。如果没有,则可以打开新问题。要保持有关此项目的最新信息,请订阅我们的邮件列表。
我们鼓励对网络源代码的贡献。有关说明,请参见开发指南。有关支持,请联系邮件列表。
贡献者列表可以在网络网站信用页面上找到。
程序来源包括:
该程序的源代码按MIT许可发布。我们要求您在项目中使用此代码(cf下面的出版物部分,尤其是技术报告)。也欢迎反馈。
NetworkIt出版物页面将网络上的出版物列为工具包,在网络中可用的算法上以及仅使用NetworkIT。如果您发现网络对自己的研究有用,我们请您引用适当的网络。