
A Networkit é um conjunto de ferramentas de código aberto para análise de rede de alto desempenho. Seu objetivo é fornecer ferramentas para a análise de grandes redes no tamanho de milhares a bilhões de arestas. Para esse fim, ele implementa algoritmos de gráficos eficientes, muitos deles paralelos para utilizar arquiteturas multicore. Eles destinam -se a calcular medidas padrão de análise de rede. A Networkit está focada na escalabilidade e na abrangência. O Networkit também é um testado para engenharia de algoritmos e contém novos algoritmos de pesquisas recentemente publicadas (ver lista de publicações abaixo).
Networkit é um módulo Python. Os algoritmos de alto desempenho são escritos em C ++ e expostos ao Python através da CHETHON TOOLCHINE. O Python, por sua vez, nos dá a capacidade de trabalhar de forma interativa e um rico ambiente de ferramentas para análise de dados e computação científica. Além disso, o núcleo da Networkit pode ser construído e usado como uma biblioteca nativa, se necessário.
Você precisará do software a seguir para instalar o Networkit como um pacote Python:
apt-get install python3-devdnf install python3-develpip3 install cmake )pip3 install cython ) Para usar o Networkit, você pode instalá -lo através de gerentes de pacotes ou criar o módulo Python a partir da fonte.
Embora a versão mais recente esteja em geral disponível para todos os gerentes de pacotes, o número de versões para downloads mais antigas diferem.
pip3 install [--user] networkit
conda config --add channels conda-forge
conda install networkit [-c conda-forge]
brew install networkit
spack install py-networkit
Informações mais específicas do sistema sobre como instalar o Networkit no Linux, MacOS (Intel e M1) e Windows-Systems podem ser encontradas aqui.
git clone https://github.com/networkit/networkit networkit
cd networkit
python3 setup.py build_ext [-jX]
pip3 install -e .
O script chamará cmake e ninja ( make como fallback) para compilar o Networkit como uma biblioteca, criar as extensões e copiar -o para a pasta superior. Por padrão, o Networkit será criado com a quantidade de núcleos disponíveis no modo otimizado. É possível que adicione a opção -jN o número de threads usados para compilação.
Para obter uma visão geral e aprender sobre as diferentes funções/classes da Networkit, dê uma olhada em nossa seção interativa de notebooks, especialmente o Networkit Userguide. Nota: Para visualizar e editar a saída calculada nos notebooks, é recomendável usar o Jupyter Notebook. Isso requer a instalação prévia do Networkit. Você realmente deve verificar isso antes de começar a trabalhar em sua análise de rede.
Também fornecemos uma instância do fichário de nossos notebooks. Para acessar este serviço, você pode clicar no crachá na parte superior ou seguir este link. Isenção de responsabilidade: Devido a reconstruções da imagem subjacente, pode levar algum tempo até que sua instância do fichário esteja pronta para uso.
Se você quiser ver apenas em resumo, como o Networkit é usado - o exemplo a seguir fornece um climpse nisso. Aqui, geramos um gráfico hiperbólico aleatório com 100K nós e calculamos suas comunidades com o 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
------------------- -----------
Caso você queira trabalhar apenas com o núcleo C ++ da Networkit, você pode instalá -lo através de gerentes de pacotes ou criá -lo a partir da fonte.
conda config --add channels conda-forge
conda install libnetworkit [-c conda-forge]
brew install libnetworkit
spack install libnetworkit
Recomendamos o CMake e o seu sistema de construção preferido para criar a parte C ++ do Networkit.
A descrição a seguir mostra como usar o cmake para construir apenas o núcleo C ++:
Primeiro você precisa criar e mudar para um diretório de construção: (neste caso chamado build )
mkdir build
cd build
Em seguida, ligue para o CMake para gerar arquivos para o sistema de make , especificando o diretório do arquivo root CMakeLists.txt (por exemplo, .. ). Depois disso, make é chamada para iniciar o processo de construção:
cmake ..
make -jX
Para acelerar a compilação com uma máquina de vários núcleos, você pode anexar -jX onde x indica o número de threads para compilar.
Este parágrafo explica como usar a biblioteca Networkit Core C ++, caso tenha sido construído a partir da fonte. Para como usá -lo quando instalado via gerentes de pacotes, melhor consulte a documentação oficial (Brew, Conde, Spack).
Para usar a biblioteca Networkit compilada anterior, você precisa instalá -la e vinculá -la enquanto compõe seu projeto. Use estas instruções para compilar e instalar o Networkit em /usr/local :
cmake ..
make -jX install
Depois que o NetworkIt for instalado, você pode usar as diretrizes no seu aplicativo C ++-da seguinte forma:
#include <networkit/graph/Graph.hpp>
Você pode compilar sua fonte da seguinte maneira:
g++ my_file.cpp -lnetworkit
Construir e executar testes de unidade de rede não é obrigatória. No entanto, como desenvolvedor, você pode escrever e executar testes de unidade para o seu código ou, se tiver algum problema com o Networkit, convém verificar se o Networkit é executado corretamente. Os testes de unidade podem ser executados apenas a partir de um clone ou cópia do repositório e não a partir de uma instalação PIP. Para executar os testes de unidade, você precisa compilá -los primeiro. Isso é feito definindo o sinalizador CMake NETWORKI_BUILD_TESTS ON :
cmake -DNETWORKIT_BUILD_TESTS=ON ..
Os testes de unidade são implementados usando macros GTEST, como TEST_F(CentralityGTest, testBetweennessCentrality) . Testes únicos podem ser executados com:
./networkit_tests --gtest_filter=CentralityGTest.testBetweennessCentrality
Além disso, pode -se especificar o nível das saídas de logs adicionando --loglevel <log_level> ; Os níveis de log suportados são: TRACE , DEBUG , INFO , WARN , ERROR e FATAL .
Os desinfetantes são ótimas ferramentas para depurar seu código. A Networkit fornece sinalizadores adicionais para ativar o endereço, vazamento e desinfetantes de comportamento indefinidos. Para compilar seu código com os desinfetantes, defina o CMAKE NETWORKIT_WITH_SANITIZERS para address ou leak :
cmake -DNETWORKIT_WITH_SANITIZERS=leak ..
Ao definir esse sinalizador para address , seu código será compilado com o address e os desinfetantes undefined . Configurar para leak também adiciona o desinfetante leak .
A versão mais recente da documentação pode ser encontrada online.
Para perguntas sobre o Networkit, dê uma olhada em nossa seção de problemas e veja se já existe uma discussão aberta. Se não estiver à vontade para abrir um novo problema. Para manter -se atualizado sobre este projeto, assine nossa lista de e -mails.
Incentivamos contribuições para o código -fonte da rede. Consulte o Guia de Desenvolvimento para obter instruções. Para obter suporte, entre em contato com a lista de discussão.
A lista de colaboradores pode ser encontrada na página Créditos do Site da Networkit.
A fonte do programa inclui:
O código -fonte deste programa é divulgado sob a licença do MIT. Pedimos que você nos cite se você usar este código em seu projeto (cf na seção de publicações abaixo e especialmente o relatório técnico). O feedback também é bem -vindo.
A página Networkit Publications lista as publicações no Networkit como um kit de ferramentas, em algoritmos disponíveis no Networkit e simplesmente usando o Networkit. Pedimos que você cite os apropriados se você achou o Networkit útil para sua própria pesquisa.