
Networkit은 고성능 네트워크 분석을위한 오픈 소스 도구 제품군입니다. 목표는 크기의 대형 네트워크 분석을위한 도구를 수천에서 수십억 개의 가장자리까지 제공하는 것입니다. 이를 위해 효율적인 그래프 알고리즘을 구현하며, 그 중 다수는 멀티 코어 아키텍처를 활용하기 위해 평행합니다. 이는 네트워크 분석의 표준 측정을 계산하기위한 것입니다. Networkit은 확장 성과 포괄성에 중점을 둡니다. Networkit은 또한 알고리즘 엔지니어링 테스트 베드이며 최근에 발표 된 연구의 새로운 알고리즘을 포함합니다 (아래 출판물 목록 참조).
네트워크는 파이썬 모듈입니다. 고성능 알고리즘은 C ++로 작성되었으며 Cython 툴체인을 통해 Python에 노출됩니다. 파이썬은 우리에게 대화식으로 작업 할 수 있고 데이터 분석 및 과학 컴퓨팅을위한 풍부한 도구 환경을 제공합니다. 또한 Networkit의 핵심은 필요한 경우 기본 라이브러리로 구축하여 사용할 수 있습니다.
Python 패키지로 Networkit을 설치하려면 다음 소프트웨어가 필요합니다.
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 )를 호출하여 네트워크를 라이브러리로 컴파일하고 확장자를 빌드하여 상단 폴더로 복사합니다. 기본적으로 네트워크는 최적화 모드에서 사용 가능한 코어 양으로 구축됩니다. 컴파일에 사용되는 스레드 수를 옵션 -jN 추가 할 수 있습니다.
NetworkIT의 다른 기능/클래스에 대해 개요를 얻고 배우려면 대화 형 노트북 섹션, 특히 NetworkIT Userguide를 살펴보십시오. 참고 : 노트북에서 계산 된 출력을보고 편집하려면 Jupyter 노트북을 사용하는 것이 좋습니다. 이를 위해서는 네트워크의 사전 설치가 필요합니다. 네트워크 분석 작업을 시작하기 전에 실제로 확인해야합니다.
우리는 또한 노트북의 바인더 인스턴스를 제공합니다. 이 서비스에 액세스하려면 상단의 배지를 클릭 하거나이 링크를 따라갈 수 있습니다. 면책 조항 : 기본 이미지의 재건으로 인해 바인더 인스턴스가 사용될 때까지 시간이 걸릴 수 있습니다.
네트워크가 어떻게 사용되는지 간단히보고 싶다면 다음 예제는 그에 대한 등반을 제공합니다. 여기서 우리는 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 빌드 시스템에 대한 파일을 생성하고 루트 CMakeLists.txt 파일 (예 : .. )의 디렉토리를 지정합니다. 이 후에 make 빌드 프로세스를 시작하도록 요청됩니다.
cmake ..
make -jX
Make Make a Make Core Machine으로 컴파일 속도를 높이려면 -jX 추가 할 수 있습니다. 여기서 X는 컴파일 할 스레드 수를 나타냅니다.
이 단락은 소스에서 구축 된 경우 네트워크 코어 C ++ 라이브러리를 사용하는 방법을 설명합니다. 패키지 관리자를 통해 설치할 때 사용하는 방법은 공식 문서 (Brew, Conda, Spack)를 가장 잘 참조하십시오.
이전 컴파일 된 네트워크 라이브러리를 사용하려면 프로젝트를 컴파일하는 동안 설치하고 연결해야합니다. 이 지침을 사용하여 /usr/local 에서 Networkit을 컴파일하고 설치하십시오.
cmake ..
make -jX install
NetworkIT가 설치되면 C ++-응용 프로그램에 포함 된 지시문을 사용할 수 있습니다.
#include <networkit/graph/Graph.hpp>
다음과 같이 소스를 컴파일 할 수 있습니다.
g++ my_file.cpp -lnetworkit
네트워크 단위 테스트를 구축하고 실행하는 것은 필수가 아닙니다. 그러나 개발자로서 코드에 대한 단위 테스트를 작성하고 실행할 수 있거나 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 웹 사이트 크레딧 페이지에서 찾을 수 있습니다.
프로그램 소스에는 다음이 포함됩니다.
이 프로그램의 소스 코드는 MIT 라이센스에 따라 릴리스됩니다. 프로젝트 에서이 코드를 사용하는 경우 (아래의 간행물 섹션 및 특히 기술 보고서)를 인용하도록 요청합니다. 피드백도 환영합니다.
NetworkIT Publications Page는 네트워크의 출판물을 툴킷으로, 네트워크에서 사용할 수있는 알고리즘 및 간단히 네트워크를 사용합니다. 네트워크가 자신의 연구에 유용한 네트워크를 발견하면 적절한 것을 인용하도록 요청합니다.