{"id":13686403,"url":"https://github.com/networkit/networkit","last_synced_at":"2025-05-14T22:07:44.514Z","repository":{"id":37735486,"uuid":"80919805","full_name":"networkit/networkit","owner":"networkit","description":"NetworKit is a growing open-source toolkit for large-scale network analysis.","archived":false,"fork":false,"pushed_at":"2025-05-12T08:24:52.000Z","size":270407,"stargazers_count":796,"open_issues_count":41,"forks_count":234,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-05-12T09:53:20.758Z","etag":null,"topics":["complex-networks","cpp","dynamic-networks","graph-algorithms","graph-analysis","graph-generation","network-analysis","parallel-algorithm","python"],"latest_commit_sha":null,"homepage":"https://networkit.github.io","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/networkit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":null,"license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-02-04T13:04:42.000Z","updated_at":"2025-05-12T08:24:57.000Z","dependencies_parsed_at":"2023-01-31T04:45:52.000Z","dependency_job_id":"d3d37051-7560-4057-ad28-03a3d4a26481","html_url":"https://github.com/networkit/networkit","commit_stats":{"total_commits":7300,"total_committers":112,"mean_commits":65.17857142857143,"dds":0.8406849315068493,"last_synced_commit":"352426aa8e53eaf675df28663c0d7270447fd5e2"},"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/networkit%2Fnetworkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/networkit%2Fnetworkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/networkit%2Fnetworkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/networkit%2Fnetworkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/networkit","download_url":"https://codeload.github.com/networkit/networkit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254235696,"owners_count":22036963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["complex-networks","cpp","dynamic-networks","graph-algorithms","graph-analysis","graph-generation","network-analysis","parallel-algorithm","python"],"created_at":"2024-08-02T15:00:31.737Z","updated_at":"2025-05-14T22:07:39.496Z","avatar_url":"https://github.com/networkit.png","language":"C++","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"60%\" src=\"docs/logo/logo_color.png\" alt=\"NetworKit - Lage-scale Network Analysis\"\u003e\u003cbr\u003e\n  \u003ca href=\"https://github.com/networkit/networkit/actions\"\u003e\u003cimg src=\"https://github.com/networkit/networkit/workflows/build/badge.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://badge.fury.io/py/networkit\"\u003e\u003cimg src=\"https://badge.fury.io/py/networkit.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://coveralls.io/github/networkit/networkit?branch=master\"\u003e\u003cimg src=\"https://coveralls.io/repos/github/networkit/networkit/badge.svg?branch=master\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://mybinder.org/v2/gh/networkit/networkit/master?urlpath=lab/tree/notebooks/User-Guide.ipynb\"\u003e\u003cimg src=\"https://mybinder.org/badge_logo.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## \n[NetworKit][networkit] is an open-source tool suite for high-performance\nnetwork analysis. Its aim is to provide tools for the analysis of large\nnetworks in the size range from thousands to billions of edges. For this\npurpose, it implements efficient graph algorithms, many of them parallel to\nutilize multicore architectures. These are meant to compute standard measures\nof network analysis. NetworKit is focused on scalability and comprehensiveness.\nNetworKit is also a testbed for algorithm engineering and\ncontains novel algorithms from recently published research (see list of publications below).\n\nNetworKit is a Python module. High-performance algorithms are written in C++ and exposed to Python\nvia the Cython toolchain. Python in turn gives us the ability to work interactively and a\nrich environment of tools for data analysis and scientific computing.\nFurthermore, NetworKit's core can be built and used as a native library if needed.\n\n## Requirements\n\nYou will need the following software to install NetworKit as a python\npackage:\n\n- A modern C++ compiler, e.g.: [g++] (\u0026gt;= 8.1), [clang++] (\u0026gt;= 6.0) or MSVC (\u0026gt;= 14.20)\n- OpenMP for parallelism (usually ships with the compiler)\n- Python3 (3.9 or higher is supported)\n  - Development libraries for Python3. The package name depends on your distribution. Examples: \n    - Debian/Ubuntu: `apt-get install python3-dev`\n    - RHEL/CentOS: `dnf install python3-devel`\n    - Windows: Use the official release installer from [www.python.org](https://www.python.org/downloads/windows/)\n- [Pip]\n- [CMake] version 3.6 or higher (Advised to use system packages if available. Alternative: `pip3 install cmake`)\n- Build system: [Make] or [Ninja]\n- Cython version 0.29 or higher (e.g., `pip3 install cython`)\n\n## Install\n\nIn order to use NetworKit, you can either install it via package managers\nor build the Python module from source.\n\n### Install via package manager\n\nWhile the most recent version is in general available for all package managers, the number of older downloadable versions differ. \n\n##### pip\n\n    pip3 install [--user] networkit\n\n##### conda (channel conda-forge)\n\n    conda config --add channels conda-forge\n    conda install networkit [-c conda-forge]\n\n##### brew\n\n    brew install networkit\n\n##### spack\n\n    spack install py-networkit\n\nMore system-specific information on how to install NetworKit on Linux, macOS (both Intel and M1) and Windows-systems can be found [here](https://networkit.github.io/get_started.html).\n\n### Building the Python module from source\n\n    git clone https://github.com/networkit/networkit networkit\n    cd networkit\n    python3 setup.py build_ext [-jX]\n    pip3 install -e .\n\nThe script will call `cmake` and `ninja` (`make` as fallback) to compile\nNetworKit as a library, build the extensions and copy it to the top folder. By\ndefault, NetworKit will be built with the amount of available cores in\noptimized mode. It is possible the add the option `-jN` the number of threads\nused for compilation.\n\n## Usage example\n\nTo get an overview and learn about NetworKit's different functions/classes, have a look at our interactive [notebooks-section][notebooks], especially the [Networkit UserGuide]. Note: To view and edit the computed output from the notebooks, it is recommended to use [Jupyter Notebook][jupyter-notebooks]. This requires the prior installation of NetworKit. You should really check that out before start working on your network analysis. \n\nWe also provide a Binder-instance of our notebooks. To access this service, you can either click on the badge at the top or follow this [link][binder]. Disclaimer: Due to rebuilds of the underlying image, it can takes some time until your Binder instance is ready for usage.\n\nIf you only want to see in short how NetworKit is used - the following example provides a climpse at that. Here we generate a random hyperbolic graph with 100k nodes and compute its communities with the PLM method:\n\n    \u003e\u003e\u003e import networkit as nk\n    \u003e\u003e\u003e g = nk.generators.HyperbolicGenerator(1e5).generate()\n    \u003e\u003e\u003e communities = nk.community.detectCommunities(g, inspect=True)\n    PLM(balanced,pc,turbo) detected communities in 0.14577102661132812 [s]\n    solution properties:\n    -------------------  -----------\n    # communities        4536\n    min community size      1\n    max community size   2790\n    avg. community size    22.0459\n    modularity              0.987243\n    -------------------  -----------\n\n## Install the C++ Core only\n\nIn case you only want to work with NetworKit's C++ core, you can either install it via package \nmanagers or build it from source. \n\n### Install C++ core via package manager\n\n##### conda (channel conda-forge)\n\n    conda config --add channels conda-forge\n    conda install libnetworkit [-c conda-forge]\n\n##### brew\n\n    brew install libnetworkit\n\n##### spack\n\n    spack install libnetworkit\n\n### Building the C++ core from source \n\nWe recommend [CMake] and your preferred build system for building the C++ part of NetworKit.\n\nThe following description shows how to use [CMake] in order to build the C++ Core only:\n\nFirst you have to create and change to a build directory: (in this case named `build`)\n\n    mkdir build\n    cd build\n\nThen call [CMake] to generate files for the `make` build system, specifying the directory of the root `CMakeLists.txt` file (e.g., `..`). After this `make` is called to start the build process:\n\n    cmake ..\n    make -jX\n\nTo speed up the compilation with make a multi-core machine, you can append `-jX` where X denotes the number of threads to compile with.\n\n### Use NetworKit as a library\n\nThis paragraph explains how to use the NetworKit core C++ library in case it has been built from source. \nFor how to use it when installed via package managers, best refer to the official documentation ([brew](https://brew.sh), [conda](https://docs.conda.io), [spack](https://spack.readthedocs.io/en/latest)). \n\nIn order to use the previous compiled networkit library, you need to have it installed, and link\nit while compiling your project. Use these instructions to compile and install NetworKit in `/usr/local`:\n\n    cmake ..\n    make -jX install\n\nOnce NetworKit has been installed, you can use include directives in your\nC++\\-application as follows:\n\n    #include \u003cnetworkit/graph/Graph.hpp\u003e\n\nYou can compile your source as follows:\n\n    g++ my_file.cpp -lnetworkit\n\n\n### Unit tests\n\nBuilding and running NetworKit unit tests is not mandatory.\nHowever, as a developer you might want to write and run unit tests for your\ncode, or if you experience any issues with NetworKit, you might want to check\nif NetworKit runs properly.\nThe unit tests can only be run from a clone or copy of the repository and not\nfrom a pip installation. In order to run the unit tests, you need to compile\nthem first. This is done by setting the [CMake] `NETWORKI_BUILD_TESTS` flag to\n`ON`:\n\n    cmake -DNETWORKIT_BUILD_TESTS=ON ..\n\nUnit tests are implemented using GTest macros such as `TEST_F(CentralityGTest, testBetweennessCentrality)`.\nSingle tests can be executed with:\n\n    ./networkit_tests --gtest_filter=CentralityGTest.testBetweennessCentrality\n\nAdditionally, one can specify the level of the logs outputs by adding `--loglevel \u003clog_level\u003e`;\nsupported log levels are: `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, and `FATAL`.\n\n\n### Compiling with address/leak sanitizers\n\nSanitizers are great tools to debug your code. NetworKit provides additional [Cmake] flags\nto enable address, leak, and undefined behavior sanitizers.\nTo compile your code with sanitizers, set the [CMake]\n`NETWORKIT_WITH_SANITIZERS` to either `address` or `leak`:\n\n    cmake -DNETWORKIT_WITH_SANITIZERS=leak ..\n\nBy setting this flag to `address`, your code will be compiled with the `address` and the `undefined` sanitizers.\nSetting it to `leak` also adds the `leak` sanitizer.\n\n\n## Documentation\n\nThe most recent version of the [documentation can be found online](https://networkit.github.io/dev-docs/index.html).\n\n## Contact\n\nFor questions regarding NetworKit, have a look at our [issues-section][issues] and see if there is already an open discussion. If not feel free to open a new issue.\nTo stay updated about this project, subscribe to our [mailing list][list].\n\n## Contributions\n\nWe encourage contributions to the NetworKit source code. See the [development guide][devguide] for instructions. For support please contact the [mailing list][list].\n\n## Credits\n\nList of contributors can be found on the [NetworKit website credits page](https://networkit.github.io/credits.html).\n\n## External Code\n\nThe program source includes:\n- the *[TLX][tlx]* library\n- the *[TTMath]* bignum library\n\n[mitlicense]: http://opensource.org/licenses/MIT\n[ttmath]: http://www.ttmath.org/\n[tlx]: https://github.com/tlx/tlx/\n\n## License\nThe source code of this program is released under the [MIT License][mitlicense].  We ask you to cite us if you use this code in your project (c.f. the publications section below and especially the [technical report](https://arxiv.org/abs/1403.3005)). Feedback is also welcome.\n\n## Publications\nThe [NetworKit publications page][nwkpubs] lists the publications on NetworKit as a toolkit, on algorithms available\nin NetworKit, and simply using NetworKit. We ask you to cite the appropriate ones if you found NetworKit useful for your own research.\n\n[nwkpubs]: https://networkit.github.io/publications.html\n[list]: https://sympa.cms.hu-berlin.de/sympa/subscribe/networkit\n[networkit]: https://networkit.github.io/\n[IPython]: https://ipython.readthedocs.io/en/stable/\n[NetworKit UserGuide]: https://github.com/networkit/networkit/blob/master/notebooks/User-Guide.ipynb\n[notebooks]: https://github.com/networkit/networkit/blob/master/notebooks/\n[g++]: https://gcc.gnu.org\n[clang++]: https://clang.llvm.org/\n[Pip]: https://pypi.python.org/pypi/pip\n[CMake]: https://cmake.org/\n[Make]: https://www.gnu.org/software/make/\n[Ninja]: https://ninja-build.org/\n[devguide]: https://networkit.github.io/dev-docs/DevGuide.html#devGuide\n[issues]: https://github.com/networkit/networkit/issues\n[jupyter-notebooks]: https://jupyter.org/install.html\n[binder]: https://mybinder.org/v2/gh/networkit/networkit/master?urlpath=lab/tree/notebooks\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetworkit%2Fnetworkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetworkit%2Fnetworkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetworkit%2Fnetworkit/lists"}