
NetworkIt是用於高性能網絡分析的開源工具套件。其目的是為分析尺寸的大型網絡分析的工具範圍從數千到數十億個邊緣。為此,它實現了有效的圖形算法,其中許多與使用多層體系結構並行。這些旨在計算網絡分析的標準度量。 NetworkIT專注於可擴展性和全面性。 NetworkIt也是算法工程的測試床,並包含來自最近發表的研究的新算法(請參見下面的出版物列表)。
NetworkIt是一個Python模塊。高性能算法用C ++編寫,並通過Cython工具鏈暴露於Python。 python反過來賦予了我們交互作用的能力,以及用於數據分析和科學計算的工具的豐富環境。此外,如果需要,可以構建和用作本地庫的網絡核心。
您將需要以下軟件將NetworkIT作為Python軟件包安裝:
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。如果您發現網絡對自己的研究有用,我們請您引用適當的網絡。