
Networkit es un conjunto de herramientas de código abierto para el análisis de red de alto rendimiento. Su objetivo es proporcionar herramientas para el análisis de grandes redes en el rango de tamaño de miles a miles de millones de bordes. Para este propósito, implementa algoritmos gráficos eficientes, muchos de ellos paralelos para utilizar arquitecturas multinúcleo. Estos están destinados a calcular medidas estándar de análisis de red. Networkit se centra en la escalabilidad y la integridad. Networkit también es una cama de prueba para la ingeniería de algoritmos y contiene algoritmos novedosos de la investigación publicada recientemente (ver lista de publicaciones a continuación).
Networkit es un módulo Python. Los algoritmos de alto rendimiento se escriben en C ++ y se exponen a Python a través de la cadena de herramientas de Cython. Python a su vez nos brinda la capacidad de trabajar de manera interactiva y un rico entorno de herramientas para el análisis de datos y la computación científica. Además, el núcleo de Networkit se puede construir y utilizar como biblioteca nativa si es necesario.
Necesitará el siguiente software para instalar Networkit como un paquete Python:
apt-get install python3-devdnf install python3-develpip3 install cmake )pip3 install cython ) Para usar NetworkIT, puede instalarlo a través de administradores de paquetes o crear el módulo Python desde la fuente.
Si bien la versión más reciente está disponible en general para todos los administradores de paquetes, el número de versiones descargables más antiguas difiere.
pip3 install [--user] networkit
conda config --add channels conda-forge
conda install networkit [-c conda-forge]
brew install networkit
spack install py-networkit
Aquí se puede encontrar más información específica del sistema sobre cómo instalar NetworkIt en Linux, MacOS (tanto Intel como M1) y Windows-Systems.
git clone https://github.com/networkit/networkit networkit
cd networkit
python3 setup.py build_ext [-jX]
pip3 install -e .
El script llamará cmake y ninja ( make como Fallback) para compilar Networkit como una biblioteca, construir las extensiones y copiarlo en la carpeta superior. Por defecto, Networkit se construirá con la cantidad de núcleos disponibles en modo optimizado. Es posible agregar la opción -jN el número de hilos utilizados para la compilación.
Para obtener una descripción general y aprender sobre las diferentes funciones/clases de Networkit, eche un vistazo a nuestra sección de cuadernos interactivos, especialmente el userguide de NetworkIT. Nota: Para ver y editar la salida calculada de los cuadernos, se recomienda usar el cuaderno Jupyter. Esto requiere la instalación previa de NetworkIT. Realmente debería verificarlo antes de comenzar a trabajar en su análisis de red.
También proporcionamos una incorporación de aglutinante de nuestros cuadernos. Para acceder a este servicio, puede hacer clic en la insignia en la parte superior o seguir este enlace. Descargo de responsabilidad: debido a las reconstrucciones de la imagen subyacente, puede tomar algún tiempo hasta que su instancia de carpeta esté lista para su uso.
Si solo desea ver en resumen cómo se usa NetworkIT, el siguiente ejemplo proporciona un climpse. Aquí generamos un gráfico hiperbólico aleatorio con 100k nodos y calculamos sus comunidades con el método 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
------------------- -----------
En caso de que solo desee trabajar con el núcleo C ++ de Networkit, puede instalarlo a través de administradores de paquetes o construirlo desde la fuente.
conda config --add channels conda-forge
conda install libnetworkit [-c conda-forge]
brew install libnetworkit
spack install libnetworkit
Recomendamos CMake y su sistema de compilación preferido para construir la parte C ++ de NetworkIT.
La siguiente descripción muestra cómo usar CMake para construir solo el núcleo C ++:
Primero debe crear y cambiar a un directorio de compilación: (en este caso llamado build )
mkdir build
cd build
Luego llame a Cmake para generar archivos para el sistema de compilación make , especificando el directorio del archivo root CMakeLists.txt (p. Ej .. ). Después de que se llama a esta make para comenzar el proceso de compilación:
cmake ..
make -jX
Para acelerar la compilación con una máquina de múltiples núcleos, puede agregar -jX donde X denota el número de hilos para compilar.
Este párrafo explica cómo usar la biblioteca Networkit Core C ++ en caso de que se haya construido desde la fuente. Para obtener cómo usarlo cuando se instala a través de los administradores de paquetes, consulte mejor la documentación oficial (Brew, Conda, Spack).
Para usar la biblioteca de redes compilada anterior, debe instalarse y vincularla mientras compila su proyecto. Utilice estas instrucciones para compilar e instalar NetworkIT IN /usr/local :
cmake ..
make -jX install
Una vez que se ha instalado NetworkIT, puede usar directivas de incluido en su C ++-Aplicación de la siguiente manera:
#include <networkit/graph/Graph.hpp>
Puede compilar su fuente de la siguiente manera:
g++ my_file.cpp -lnetworkit
La construcción y la ejecución de las pruebas unitarias de la red no es obligatorio. Sin embargo, como desarrollador, es posible que desee escribir y ejecutar pruebas unitarias para su código, o si experimenta algún problema con NetworkIT, es posible que desee verificar si NetworkIT se ejecuta correctamente. Las pruebas unitarias solo se pueden ejecutar desde un clon o copia del repositorio y no desde una instalación de PIP. Para ejecutar las pruebas unitarias, primero debe compilarlas. Esto se hace configurando el indicador CMake NETWORKI_BUILD_TESTS ON :
cmake -DNETWORKIT_BUILD_TESTS=ON ..
Las pruebas unitarias se implementan utilizando macros GTEST como TEST_F(CentralityGTest, testBetweennessCentrality) . Las pruebas individuales se pueden ejecutar con:
./networkit_tests --gtest_filter=CentralityGTest.testBetweennessCentrality
Además, se puede especificar el nivel de las salidas de los registros agregando --loglevel <log_level> ; Los niveles de registro compatibles son: TRACE , DEBUG , INFO , WARN , ERROR y FATAL .
Los desinfectantes son excelentes herramientas para depurar su código. Networkit proporciona banderas CMake adicionales para habilitar la dirección, la fuga y los desinfectantes de comportamiento indefinidos. Para compilar su código con desinfectantes, configure el CMake NETWORKIT_WITH_SANITIZERS en address o leak :
cmake -DNETWORKIT_WITH_SANITIZERS=leak ..
Al configurar este indicador en address , su código se compilará con la address y los desinfenadores undefined . Configurarlo en leak también agrega el desinfectante leak .
La versión más reciente de la documentación se puede encontrar en línea.
Para preguntas sobre NetworkIT, eche un vistazo a nuestra sección de problemas y vea si ya hay una discusión abierta. Si no, no dude en abrir un nuevo problema. Para mantenerse actualizado sobre este proyecto, suscríbase a nuestra lista de correo.
Alentamos las contribuciones al código fuente de la red. Consulte la Guía de desarrollo para obtener instrucciones. Para obtener soporte, comuníquese con la lista de correo.
La lista de contribuyentes se puede encontrar en la página de créditos del sitio web de Networkit.
La fuente del programa incluye:
El código fuente de este programa se publica bajo la licencia MIT. Le pedimos que nos cita si usa este código en su proyecto (cf la sección de publicaciones a continuación y especialmente el informe técnico). Los comentarios también son bienvenidos.
La página de publicaciones de Networkit enumera las publicaciones en NetworkIT como un kit de herramientas, en algoritmos disponibles en NetworkIT, y simplemente utilizando Network. Le pedimos que cite los apropiados si le pareció útil para su propia investigación.