
NetworkITは、高性能ネットワーク分析用のオープンソースツールスイートです。その目的は、サイズの大きなネットワークを数千から数十億のエッジの範囲で分析するためのツールを提供することです。この目的のために、効率的なグラフアルゴリズムを実装します。その多くは、マルチコアアーキテクチャを利用するために並行しています。これらは、ネットワーク分析の標準的な測定値を計算することを目的としています。 NetworkITは、スケーラビリティと包括性に焦点を当てています。 NetworkITは、アルゴリズムエンジニアリングのテストベッドでもあり、最近公開された研究の新しいアルゴリズムを含んでいます(以下の出版物のリストを参照)。
NetworkITはPythonモジュールです。高性能アルゴリズムはC ++で記述され、Cythonツールチェーンを介してPythonにさらされます。 Pythonは、インタラクティブに作業する能力と、データ分析と科学的コンピューティングのためのツールの豊富な環境を提供します。さらに、NetworkITのコアは、必要に応じてネイティブライブラリとして構築および使用できます。
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システムにNetworkITをインストールする方法に関するよりシステム固有の情報は、ここにあります。
git clone https://github.com/networkit/networkit networkit
cd networkit
python3 setup.py build_ext [-jX]
pip3 install -e .
このスクリプトは、 cmakeとninja ( make as Fallback)を呼び出して、NetworkITをライブラリとしてコンパイルし、拡張機能を構築し、トップフォルダーにコピーします。デフォルトでは、NetworkITは、最適化されたモードで利用可能なコアの量で構築されます。コンピレーションに使用されるスレッドの数をオプション-jNに追加する可能性があります。
概要を取得し、NetworkITのさまざまな機能/クラスについて学ぶには、インタラクティブなノートブックセクション、特に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 ++部分を構築するための優先ビルドシステムをお勧めします。
次の説明は、C ++コアのみを構築するためにCmakeの使用方法を示しています。
まず、ビルドディレクトリを作成して変更する必要があります:(この場合、 buildという名前)
mkdir build
cd build
次に、cmakeを呼び出してmake Build Systemのファイルを生成し、root CMakeLists.txtファイル(例えば.. )のディレクトリを指定します。このmake 、ビルドプロセスを開始するために呼び出されます。
cmake ..
make -jX
Make Multi -Coreマシンでコンパイルをスピードアップするには、Xがコンパイルするスレッドの数を示す場合に-jXを追加できます。
この段落では、ソースから構築された場合に備えて、NetworkIT Core C ++ライブラリを使用する方法について説明します。パッケージマネージャーを介してインストールされたときに使用する方法については、公式ドキュメント(Brew、Conda、Spack)を参照してください。
以前のコンパイルされたNetworkITライブラリを使用するには、プロジェクトをコンパイルしながらインストールしてリンクする必要があります。これらの指示を使用して、 /usr/localでnetworkitをコンパイルしてインストールします。
cmake ..
make -jX install
NetworkITがインストールされたら、次のようにC ++ - アプリケーションにディレクティブを含めることができます。
#include <networkit/graph/Graph.hpp>
次のようにソースをコンパイルできます。
g++ my_file.cpp -lnetworkit
NetworkITの構築と実行のユニットテストは必須ではありません。ただし、開発者として、コードのユニットテストを書き込み、実行することをお勧めします。または、NetworkITで問題が発生した場合は、NetworkITが適切に実行されているかどうかを確認することができます。ユニットテストは、リポジトリのクローンまたはコピーからのみ実行でき、PIPのインストールからではありません。ユニットテストを実行するには、最初にそれらをコンパイルする必要があります。これは、cmake NETWORKI_BUILD_TESTSフラグをONに設定することによって行われます。
cmake -DNETWORKIT_BUILD_TESTS=ON ..
ユニットテストはTEST_F(CentralityGTest, testBetweennessCentrality)などのGTESTマクロを使用して実装されます。単一のテストは次のように実行できます。
./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消毒剤も追加されます。
ドキュメントの最新バージョンはオンラインで見つけることができます。
NetworkITに関する質問については、問題セクションをご覧になり、すでにオープンなディスカッションがあるかどうかを確認してください。そうでない場合は、新しい問題を公開してください。このプロジェクトについて最新情報を入手するには、メーリングリストを購読してください。
NetworkITソースコードへの貢献をお勧めします。指示については、開発ガイドを参照してください。サポートについては、メーリングリストにお問い合わせください。
貢献者のリストは、NetworkIT Webサイトクレジットページにあります。
プログラムソースには以下が含まれます。
このプログラムのソースコードは、MITライセンスの下でリリースされます。このコードをプロジェクトで使用する場合は、以下の出版セクション、特にテクニカルレポートを使用する場合は、引用するようお願いします。フィードバックも大歓迎です。
NetworkIT Publicationsページには、NetworkITの出版物がツールキットとして、NetworkITで利用可能なアルゴリズム、および単にNetworkITを使用しています。 NetworkITがあなた自身の研究に役立つ場合は、適切なものを引用するようお願いします。