
NetworkIt est une suite d'outils open source pour une analyse de réseau haute performance. Son objectif est de fournir des outils pour l'analyse des grands réseaux dans la taille de la taille de milliers à des milliards de bords. À cette fin, il met en œuvre des algorithmes de graphes efficaces, dont beaucoup parallèles à utiliser des architectures multicore. Ceux-ci sont destinés à calculer les mesures standard de l'analyse du réseau. NetworkIt se concentre sur l'évolutivité et l'exhaustivité. NetworkIt est également un banc d'essai pour l'ingénierie des algorithmes et contient de nouveaux algorithmes à partir de recherches récemment publiées (voir la liste des publications ci-dessous).
NetworkIt est un module Python. Les algorithmes haute performance sont écrits en C ++ et exposés à Python via la chaîne d'outils Cython. Python nous donne à son tour la capacité de travailler de manière interactive et un environnement riche d'outils pour l'analyse des données et l'informatique scientifique. De plus, le noyau de NetworkIt peut être construit et utilisé comme bibliothèque native si nécessaire.
Vous aurez besoin du logiciel suivant pour installer NetworkIt en tant que package Python:
apt-get install python3-devdnf install python3-develpip3 install cmake )pip3 install cython ) Pour utiliser NetworkIt, vous pouvez soit l'installer via des gestionnaires de packages, soit créer le module Python à partir de la source.
Bien que la version la plus récente soit en général disponible pour tous les gestionnaires de packages, le nombre d'anciennes versions téléchargeables diffèrent.
pip3 install [--user] networkit
conda config --add channels conda-forge
conda install networkit [-c conda-forge]
brew install networkit
spack install py-networkit
D'autres informations spécifiques au système sur la façon d'installer NetworkIt sur Linux, MacOS (Intel et M1) et Windows-Systems peuvent être trouvées ici.
git clone https://github.com/networkit/networkit networkit
cd networkit
python3 setup.py build_ext [-jX]
pip3 install -e .
Le script appellera cmake et ninja ( make comme Fallback) pour compiler NetworkIt en tant que bibliothèque, créer les extensions et le copier dans le dossier supérieur. Par défaut, NetworkIt sera construit avec la quantité de cœurs disponibles en mode optimisé. Il est possible d'ajouter l'option -jN le nombre de threads utilisés pour la compilation.
Pour obtenir un aperçu et en savoir plus sur les différentes fonctions / classes de Networkit, jetez un œil à notre section interactive des cahiers, en particulier le NetworkIt Userguide. Remarque: Pour afficher et modifier la sortie calculée des ordinateurs portables, il est recommandé d'utiliser Jupyter Notebook. Cela nécessite l'installation antérieure de NetworkIt. Vous devriez vraiment vérifier cela avant de commencer à travailler sur votre analyse de réseau.
Nous fournissons également une instance de liant de nos cahiers. Pour accéder à ce service, vous pouvez soit cliquer sur l'insigne en haut, soit suivre ce lien. Avertissement: En raison des reconstructions de l'image sous-jacente, cela peut prendre un certain temps jusqu'à ce que votre instance de liant soit prête à utiliser.
Si vous voulez seulement voir en bref comment NetworkIt est utilisé - l'exemple suivant fournit un climpse à cela. Ici, nous générons un graphique hyperbolique aléatoire avec des nœuds de 100k et calculons ses communautés avec la méthode 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
------------------- -----------
Dans le cas où vous ne souhaitez travailler qu'avec C ++ Core de Networkit, vous pouvez soit l'installer via des gestionnaires de packages, soit le construire à partir de Source.
conda config --add channels conda-forge
conda install libnetworkit [-c conda-forge]
brew install libnetworkit
spack install libnetworkit
Nous recommandons CMake et votre système de construction préféré pour construire la partie C ++ de NetworkIt.
La description suivante montre comment utiliser CMake afin de construire le noyau C ++ uniquement:
Vous devez d'abord créer et passer à un répertoire de construction: (dans ce cas nommé build )
mkdir build
cd build
Ensuite, appelez CMake pour générer des fichiers pour le système de création de make , en spécifiant le répertoire du fichier root CMakeLists.txt (par exemple, .. ). Après cette make , il est appelé pour démarrer le processus de construction:
cmake ..
make -jX
Pour accélérer la compilation avec Making a Multi-Core Machine, vous pouvez ajouter -jX où X désigne le nombre de threads avec lesquels compiler.
Ce paragraphe explique comment utiliser la bibliothèque NetworkIt Core C ++ au cas où elle aurait été construite à partir de Source. Pour comment l'utiliser lors de l'installation via des gestionnaires de packages, se référez mieux à la documentation officielle (Brew, Conda, Spack).
Afin d'utiliser la bibliothèque NetworkIt compilée précédente, vous devez l'installer et la lier lors de la compilation de votre projet. Utilisez ces instructions pour compiler et installer NetworkIt dans /usr/local :
cmake ..
make -jX install
Une fois NetworkIt installé, vous pouvez utiliser des directives inclues dans votre application C ++ - comme suit:
#include <networkit/graph/Graph.hpp>
Vous pouvez compiler votre source comme suit:
g++ my_file.cpp -lnetworkit
La construction et l'exécution de tests unitaires de réseau ne sont pas obligatoires. Cependant, en tant que développeur, vous voudrez peut-être écrire et exécuter des tests unitaires pour votre code, ou si vous rencontrez des problèmes avec NetworkIt, vous voudrez peut-être vérifier si NetworkIt s'exécute correctement. Les tests unitaires ne peuvent être exécutés qu'à partir d'un clone ou d'une copie du référentiel et non à partir d'une installation PIP. Afin d'exécuter les tests unitaires, vous devez d'abord les compiler. Cela se fait en définissant le drapeau CMake NETWORKI_BUILD_TESTS sur ON :
cmake -DNETWORKIT_BUILD_TESTS=ON ..
Les tests unitaires sont implémentés à l'aide de macros GTEST tels que TEST_F(CentralityGTest, testBetweennessCentrality) . Les tests uniques peuvent être exécutés avec:
./networkit_tests --gtest_filter=CentralityGTest.testBetweennessCentrality
De plus, on peut spécifier le niveau des sorties de journaux en ajoutant --loglevel <log_level> ; Les niveaux de journal pris en charge sont les suivants: TRACE , DEBUG , INFO , WARN , ERROR et FATAL .
Les désinfectants sont d'excellents outils pour déboguer votre code. NetworkIt fournit des drapeaux CMake supplémentaires pour activer les désinfectants d'adresse, de fuite et de comportement non défini. Pour compiler votre code avec des désinfectants, définissez le CMake NETWORKIT_WITH_SANITIZERS pour address ou leak :
cmake -DNETWORKIT_WITH_SANITIZERS=leak ..
En définissant cet drapeau à address , votre code sera compilé avec l' address et les désinfectants undefined . Le régler sur leak ajoute également le désinfectant leak .
La version la plus récente de la documentation peut être trouvée en ligne.
Pour les questions concernant Networkit, consultez notre section des problèmes et voyez s'il y a déjà une discussion ouverte. Sinon, n'hésitez pas à ouvrir un nouveau problème. Pour rester à jour sur ce projet, abonnez-vous à notre liste de diffusion.
Nous encourageons les contributions au code source Networkit. Voir le guide de développement pour les instructions. Pour l'assistance, veuillez contacter la liste de diffusion.
La liste des contributeurs peut être trouvée sur la page des crédits de site Web Networkit.
La source du programme comprend:
Le code source de ce programme est publié sous la licence MIT. Nous vous demandons de nous citer si vous utilisez ce code dans votre projet (cf la section Publications ci-dessous et en particulier le rapport technique). Les commentaires sont également les bienvenus.
La page Publications NetworkIt répertorie les publications sur NetworkIt en tant que boîte à outils, sur les algorithmes disponibles dans NetworkIt et simplement à l'aide de NetworkIt. Nous vous demandons de citer les plus appropriés si vous avez trouvé NetworkIt utile pour vos propres recherches.