{"id":18711728,"url":"https://github.com/memgraph/mage","last_synced_at":"2025-06-25T22:30:37.896Z","repository":{"id":37823285,"uuid":"327569302","full_name":"memgraph/mage","owner":"memgraph","description":"MAGE - Memgraph Advanced Graph Extensions :crystal_ball:","archived":false,"fork":false,"pushed_at":"2025-06-16T07:32:01.000Z","size":22867,"stargazers_count":290,"open_issues_count":81,"forks_count":29,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-06-16T08:41:37.165Z","etag":null,"topics":["cypher","graph-algorithms","graph-database","memgraph","open-source","real-time-analytics","stream-processing"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/memgraph.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-01-07T09:51:54.000Z","updated_at":"2025-06-15T22:07:23.000Z","dependencies_parsed_at":"2023-10-13T09:21:54.571Z","dependency_job_id":"32dad0ab-3a64-4b5c-aad3-8fe5ebf79b35","html_url":"https://github.com/memgraph/mage","commit_stats":{"total_commits":137,"total_committers":23,"mean_commits":5.956521739130435,"dds":0.7153284671532847,"last_synced_commit":"f21446d191c28d9f0f09837b6b6ce4aa9d9e7fb4"},"previous_names":[],"tags_count":93,"template":false,"template_full_name":null,"purl":"pkg:github/memgraph/mage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fmage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fmage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fmage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fmage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/memgraph","download_url":"https://codeload.github.com/memgraph/mage/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memgraph%2Fmage/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261962067,"owners_count":23236863,"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":["cypher","graph-algorithms","graph-database","memgraph","open-source","real-time-analytics","stream-processing"],"created_at":"2024-11-07T12:40:37.987Z","updated_at":"2025-06-25T22:30:37.816Z","avatar_url":"https://github.com/memgraph.png","language":"C++","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://github.com/memgraph/mage\"\u003e \u003cimg src=\"https://github.com/memgraph/mage/blob/main/img/wizard.png?raw=true\" alt=\"MAGE\" width=20%\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  MAGE\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/memgraph/mage/actions\" alt=\"Actions\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/memgraph/mage/test.yml?branch=main\u0026label=build%20and%20test\u0026logo=github\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/memgraph/mage/blob/main/LICENSE\" alt=\"Licence\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/license/memgraph/mage\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://docs.memgraph.com/mage/\" alt=\"Documentation\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/documentation-MAGE-orange\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://hub.docker.com/r/memgraph/memgraph-mage\" alt=\"Documentation\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/image-Docker-2496ED?logo=docker\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/memgraph/mage\" alt=\"Languages\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/languages/count/memgraph/mage\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/memgraph/mage/stargazers\" alt=\"Stargazers\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/stars/memgraph/mage?style=social\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## Memgraph Advanced Graph Extensions :crystal_ball:\n\nThis open-source repository contains all available user-defined graph analytics\nmodules and procedures that extend the Cypher query language, written by the\nteam behind Memgraph and its users. You can find and contribute implementations\nof various algorithms in multiple programming languages, all runnable inside\nMemgraph. This project aims to give everyone the tools they need to tackle the\nmost challenging graph problems.\n\n### Introduction to query modules with MAGE\n\nMemgraph introduces the concept of [query\nmodules](https://docs.memgraph.com/memgraph/reference-guide/query-modules/),\nuser-defined procedures that extend the Cypher query language. These procedures\nare grouped into modules that can be loaded into Memgraph. How to run them can\nbe seen on their official\n[documentation](https://docs.memgraph.com/mage/usage/loading-modules). When\nstarted, Memgraph will automatically attempt to load the query modules from all\n`*.so` and `*.py` files it finds in the default directory defined with flag\n[--query-modules-directory](https://docs.memgraph.com/memgraph/reference-guide/configuration/).\n\n### Further reading\n\nIf you want more info about MAGE, check out the official [MAGE\nDocumentation](https://docs.memgraph.com/mage/).\n\n### Algorithm proposition\n\nFurthermore, if you have an **algorithm proposition**, please fill in the survey\non [**mage.memgraph.com**](https://mage.memgraph.com/).\n\n### Community\n\nMake sure to check out the Memgraph community and join us on a survey of\nstreaming graph algorithms! Drop us a message on the channels below:\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://twitter.com/intent/follow?screen_name=memgraphmage\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/@memgraphmage-1DA1F2?style=for-the-badge\u0026logo=twitter\u0026logoColor=white\" alt=\"Follow @memgraphmage\"/\u003e\n  \u003c/a\u003e\n\u003ca href=\"https://discourse.memgraph.com/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Discourse_forum-000000?style=for-the-badge\u0026logo=discourse\u0026logoColor=white\" alt=\"Discourse forum\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://memgr.ph/join-discord\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Discord-7289DA?style=for-the-badge\u0026logo=discord\u0026logoColor=white\" alt=\"Discord\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/memgraph\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Memgraph_GitHub-181717?style=for-the-badge\u0026logo=github\u0026logoColor=white\" alt=\"Memgraph Github\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.youtube.com/channel/UCZ3HOJvHGxtQ_JHxOselBYg\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/YouTube-FF0000?style=for-the-badge\u0026logo=youtube\u0026logoColor=white\" alt=\"Memgraph YouTube\"/\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n## Overview\n\n- [Memgraph Advanced Graph Extensions :crystal\\_ball:](#memgraph-advanced-graph-extensions-crystal_ball)\n  - [Introduction to query modules with MAGE](#introduction-to-query-modules-with-mage)\n  - [Further reading](#further-reading)\n  - [Algorithm proposition](#algorithm-proposition)\n  - [Community](#community)\n- [Overview](#overview)\n- [Memgraph compatibility](#memgraph-compatibility)\n- [How to install MAGE?](#how-to-install-mage)\n  - [1. Use MAGE with Docker](#1-use-mage-with-docker)\n    - [a) Get MAGE from Docker Hub](#a-get-mage-from-docker-hub)\n    - [b) Install MAGE with a Docker build of the repository](#2-install-mage-with-docker-build-of-the-repository)\n  - [2. Installing MAGE on Linux distro from source](#2-installing-mage-on-linux-distro-from-source)\n    - [Prerequisites](#prerequisites)\n- [Running MAGE](#running-mage)\n- [MAGE Spells](#mage-spells)\n- [Advanced configuration](#advanced-configuration)\n- [Testing MAGE](#testing-mage)\n- [Contributing](#contributing)\n- [Code of Conduct](#code-of-conduct)\n- [Feedback](#feedback)\n\n## Memgraph compatibility\n\nWith changes in Memgraph API, MAGE started to track version numbers. The table\nbelow lists the compatibility of MAGE with Memgraph versions.\n| MAGE version | Memgraph version |\n| ------------ | ---------------- |\n| \u003e= 1.11.9    | \u003e= 2.11.0        |\n| \u003e= 1.5.1     | \u003e= 2.5.1         |\n| \u003e= 1.5       | \u003e= 2.5.0         |\n| \u003e= 1.4       | \u003e= 2.4.0         |\n| \u003e= 1.0 | \u003e= 2.0.0 |\n| ^0 | \u003e= 1.4.0 \u003c= 1.6.1 |\n\n## How to install MAGE?\n\nThere are two options to install MAGE. \n\n1) For the [Docker\ninstallation](#1-installing-mage-with-docker), you only need Docker installed.\n\n2) [To build from\nsource](#2-installing-MAGE-on-linux-distro-from-source), you will\nneed to install a few things first. Jump to section #2 to check for installation details.   \n\nAfter the installation, you will be ready to query Memgraph and use MAGE\nmodules. Make sure to have one of [the querying\nplatforms](https://memgraph.com/docs/memgraph/connect-to-memgraph/) installed as\nwell.\n\n### 1. Use MAGE with Docker\n\n#### a) Get MAGE from Docker Hub\n\n**1.** This command downloads the image from Docker Hub and runs Memgraph\npreloaded with **MAGE** modules:\n\n```\ndocker run -p 7687:7687 -p 7444:7444 memgraph/memgraph-mage\n```\n\n#### 2 Install MAGE with Docker build of the repository\n\n**0. a** Make sure that you have cloned the MAGE Github repository and positioned\nyourself inside the repo in your terminal:\n\n```bash\ngit clone --recurse-submodules https://github.com/memgraph/mage.git \u0026\u0026 cd mage\n```\n\n**0. b** Download Memgraph from our official download site inside your cloned MAGE repository. Set `${MEMGRAPH_VERSION}` to the latest release of Memgraph, and\n`${ARCHITECTURE}` to your system architecture (`amd64` or `arm64`):\n\n```bash\n\ncurl -L \"https://download.memgraph.com/memgraph/v${MEMGRAPH_VERSION}/ubuntu-24.04/memgraph_${MEMGRAPH_VERSION}-1_${ARCHITECTURE}.deb\" \u003e memgraph-${ARCHITECTURE}.deb\n\n```\n\nor this one if you are on `arm64`:\n\n```bash\ncurl -L \"https://download.memgraph.com/memgraph/v${MEMGRAPH_VERSION}/ubuntu-24.04-aarch64/memgraph_${MEMGRAPH_VERSION}-1_arm64.deb\" \u003e memgraph-arm64.deb\n```\n\n**1.** To build the **MAGE** image run the following command where you set `${architecture}` to your system architecture (`amd64` or `arm64`):\n\n```\nDOCKER_BUILDKIT=1 docker buildx build \\\n--tag memgraph-mage:prod \\\n--target prod \\\n--platform linux/${architecture} \\\n--file Dockerfile.release \\\n--load .\n\n```\n\nThis will build any new algorithm added to MAGE, and load it inside Memgraph.\n\n**2.** Start the container with the following command and enjoy Memgraph with\n**MAGE**:\n\n```\ndocker run --rm -p 7687:7687 -p 7444:7444 --name mage memgraph-mage\n```\n\n**NOTE**: if you made any changes while the **MAGE** Docker container was\nrunning, you will need to stop it and rebuild the whole image, or you can copy\nthe `mage` directory inside the Docker container and do the rebuild from there.\nTo learn more about development with MAGE and Docker, visit the\n[documentation](https://memgraph.com/docs/mage/installation).\n\n### 2. Installing MAGE on Linux distro from source\n\n\u003e Note: This step is more suitable for local development.\n\n#### Prerequisites\n\n- Linux based Memgraph package you can download\n  [here](https://memgraph.com/download). We offer Ubuntu, Debian and CentOS\n  based Memgraph packages. To install, proceed to the following\n  [site](https://memgraph.com/docs/memgraph/installation).\n- To build and install MAGE query modules you will need:\n  - libcurl4\n  - libpython3.12\n  - libssl-dev\n  - libboost-all-dev\n  - openssl \n  - build-essential\n  - make     \n  - cmake          \n  - curl           \n  - g++          \n  - python3      \n  - python3-pip \n  - python3-setuptools    \n  - python3-dev     \n  - clang\n  - unixodbc  \n  - uuid-dev\n\n\nSince Memgraph needs to load MAGE's modules, there is the `setup` script to help you. With it, you can build the modules so that Memgraph\ncan load them on start up.\n\nBefore you start, don't forget to clone MAGE with `--recurse-submodules` flag:\n\n```bash\ngit clone --recurse-submodules https://github.com/memgraph/mage.git \u0026\u0026 cd mage\n\n```\nRun the following command to install Rust and Python dependencies:\n```bash\ncurl https://sh.rustup.rs -sSf | sh -s -- -y \\\n\u0026\u0026 export PATH=\"/root/.cargo/bin:${PATH}\" \\\n\u0026\u0026 python3 -m  pip install -r /mage/python/requirements.txt \\\n\u0026\u0026 python3 -m  pip install -r /mage/python/tests/requirements.txt \\\n\u0026\u0026 python3 -m  pip install torch-sparse torch-cluster torch-spline-conv torch-geometric torch-scatter -f https://data.pyg.org/whl/torch-1.12.0+cu102.html \\\n```\n\n\n\nNow you can run the following command to compile and copy the query modules to the `/usr/lib/memgraph/query_modules` path:\n\n```bash\npython3 setup build -p /usr/lib/memgraph/query_modules\n```\n\nIt will generate a `mage/dist` directory and copy the modules to\nthe `/usr/lib/memgraph/query_modules` directory.\n\n\n\u003e Note that query modules are loaded into Memgraph on startup so if your\n\u003e instance was already running you will need to execute the following query\n\u003e inside one of the [querying\n\u003e platforms](https://docs.memgraph.com/memgraph/connect-to-memgraph) to load\n\u003e them: `CALL mg.load_all();`\n\n## Running MAGE\n\nThis is an example of running the PageRank algorithm on a simple graph. You can\nfind more details on the [documentation\npage](https://memgraph.com/docs/mage/query-modules/cpp/pagerank#example).\n\n```\n// Create the graph from the image below\n\nCALL pagerank.get()\nYIELD node, rank;\n```\n\n|             Graph input             |              MAGE output              |\n| :---------------------------------: | :-----------------------------------: |\n| ![graph_input](img/graph_input.png) | ![graph_output](img/graph_output.png) |\n\n## MAGE Spells\n\n| Algorithms                                                                                                       | Lang   | Description                                                                                                                                                                                                                       |\n|------------------------------------------------------------------------------------------------------------------|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [betweenness_centrality](https://memgraph.com/docs/mage/query-modules/cpp/betweenness-centrality)                | C++    | The betweenness centrality of a node is defined as the sum of the of all-pairs shortest paths that pass through the node divided by the number of all-pairs shortest paths in the graph. The algorithm has O(nm) time complexity. |\n| [betweenness_centrality_online](https://memgraph.com/docs/mage/query-modules/cpp/betweenness-centrality-online)  | C++    | The betweenness centrality of a node is defined as the sum of the of all-pairs shortest paths that pass through the node divided by the number of all-pairs shortest paths in the graph. The algorithm has O(nm) time complexity. |\n| [biconnected_components](https://memgraph.com/docs/mage/query-modules/cpp/biconnected-components)                | C++    | An algorithm for calculating maximal biconnected subgraph. A biconnected subgraph is a subgraph with a property that if any vertex were to be removed, the graph will remain connected.                                           |\n| [bipartite_matching](https://memgraph.com/docs/mage/query-modules/cpp/bipartite-matching)                        | C++    | An algorithm for calculating maximum bipartite matching, where matching is a set of nodes chosen in such a way that no two edges share an endpoint.                                                                               |\n| [bridges](https://memgraph.com/docs/mage/query-modules/cpp/bridges)                                              | C++    | A bridge is an edge, which when deleted, increases the number of connected components. The goal of this algorithm is to detect edges that are bridges in a graph.                                                                 |\n| [community_detection](https://memgraph.com/docs/mage/query-modules/cpp/community-detection)                      | C++    | The Louvain method for community detection is a greedy method for finding communities with maximum modularity in a graph. Runs in _O_(*n*log*n*) time.                                                                            |\n| [community_detection_online](https://memgraph.com/docs/mage/query-modules/cpp/community-detection-online)        | C++    | A dynamic community detection algorithm suitable for large-scale graphs based upon label propagation. Runs in O(m) time and has O(mn) space complexity.                                                                           |\n| [cycles](https://memgraph.com/docs/mage/query-modules/cpp/cycles)                                                | C++    | Algorithm for detecting cycles on graphs                                                                                                                                                                                          |\n| [cugraph](https://memgraph.com/docs/mage/query-modules/cuda/cugraph)                                             | CUDA   | Collection of NVIDIA GPU-powered algorithms integrated in Memgraph. Includes centrality measures, link analysis and graph clusterings.                                                                                            |\n| [distance_calculator](https://memgraph.com/docs/mage/query-modules/python/distance-calculator)                   | Python | Module for finding the geographical distance between two points defined with 'lng' and 'lat' coordinates.                                                                                                                         |\n| [export_util](https://memgraph.com/docs/mage/query-modules/python/export-util)                                   | Python | A module for exporting the graph database in different formats (JSON).                                                                                                                                                            |\n| [graph_analyzer](https://memgraph.com/docs/mage/query-modules/python/graph-analyzer)                             | Python | This Graph Analyzer query module offers insights about the stored graph or a subgraph.                                                                                                                                            |\n| [graph_coloring](https://memgraph.com/docs/mage/query-modules/python/graph-coloring)                             | Python | An algorithm for assigning labels to the graph elements subject to certain constraints. In this form, it is a way of coloring the graph vertices such that no two adjacent vertices are of the same color.                        |\n| [graph_util](https://memgraph.com/docs/mage/query-modules/cpp/graph_util)                                          | C++ | A module with common graph utility procedures in day-to-day operations with graphs.      \n| [igraph](https://memgraph.com/docs/mage/query-modules/python/igraphalg)                                          | Python | A module that provides igraph integration with Memgraph and implements igraph algorithms                                                                                                                                          |    \n| [import_util](https://memgraph.com/docs/mage/query-modules/python/import-util)                                   | Python | A module for importing data generated by the `export_util()`.                                                                                                                                                                     |\n| [json_util](https://memgraph.com/docs/mage/query-modules/python/json-util)                                       | Python | A module for loading JSON from a local file or remote address.                                                                                                                                                                    |\n| [katz_centrality](https://memgraph.com/docs/mage/query-modules/cpp/katz-centrality)                              | C++    | Katz centrality is a centrality measurement that outputs a node's influence based on the number of shortest paths and their weighted length.                                                                                      |\n| [katz_centrality_online](https://memgraph.com/docs/mage/query-modules/cpp/katz-centrality-online)                | C++    | Online implementation of the Katz centrality. Outputs the approximate result for Katz centrality while maintaining the order of rankings.                                                                                         |\n| [kmeans](https://memgraph.com/docs/mage/query-modules/python/kmeans)                                             | Python | An algorithm for clustering given data.                                                                                                                                                                                                  |\n| [leiden_community_detection](https://memgraph.com/docs/mage/query-modules/cpp/leiden-community-detection)                      | C++    | The Leiden method for community detection is an improvement on the Louvain method, designed to find communities with maximum modularity in a graph while addressing issues of disconnected communities. Runs in _O_(*L* *m*)  time, where *L* is the number of iterations of the algorithm.\n| [link_prediction_gnn](https://memgraph.com/docs/mage/query-modules/python/link-prediction-with-gnn)              | Python | A module for predicting links in graphs using graph neural networks.                                                                                                                                                          |\n| [llm_util](https://memgraph.com/docs/mage/query-modules/python/llm-util)                                        | Python | A module that contains procedures describing graphs in a format best suited for large language models (LLMs).     |\n| [max_flow](https://memgraph.com/docs/mage/query-modules/python/max-flow)                                         | Python | An algorithm for calculating maximum flow through a graph using capacity scaling                                                                                                                                                  |\n| [meta_util](https://memgraph.com/docs/mage/query-modules/python/meta-util)                                                                                                             | Python | A module that contains procedures describing graphs on a meta-level.                                                                    |\n| [node_classification_with_gnn](https://memgraph.com/docs/mage/query-modules/python/node-classification-with-gnn) | Python | A graph neural network-based node classification module.                                                                                                                                                                            |\n| [node2vec](https://memgraph.com/docs/mage/query-modules/python/node2vec)                                         | Python | An algorithm for calculating node embeddings from static graphs.                                                                                                                                                                  |\n| [node2vec_online](https://memgraph.com/docs/mage/query-modules/python/node2vec-online)                           | Python | An algorithm for calculating node embeddings as new edges arrive                                                                                                                                                                  |\n| [node_similarity](https://memgraph.com/docs/mage/query-modules/python/node-similarity)                           | Python | A module that contains similarity measures for calculating the similarity between two nodes.                                                                                                                                      |\n| [nxalg](https://memgraph.com/docs/mage/query-modules/python/nxalg)                                               | Python | A module that provides NetworkX integration with Memgraph and implements many NetworkX algorithms                                                                                                                                 |\n| [pagerank](https://memgraph.com/docs/mage/query-modules/cpp/pagerank)                                            | C++    | An algorithm that yields the influence measurement based on the recursive information about the connected nodes influence                                                                                                         |\n| [pagerank_online](https://memgraph.com/docs/mage/query-modules/cpp/pagerank-online)                              | C++    | A dynamic algorithm made for calculating PageRank in a graph streaming scenario.                                                                                                                                                  |\n| [rust_example](cpp/pagerank_module/pagerank_online_module.cpp)                                                   | Rust   | Example of a basic module with input parameters forwarding, made in Rust.                                                                                                                                                         |\n| [set_cover](https://memgraph.com/docs/mage/query-modules/python/set-cover)                                       | Python | The algorithm for finding minimum cost subcollection of sets that covers all elements of a universe.      \n| [set_property](https://memgraph.com/docs/mage/query-modules/python/set-property)                                 | C++    | Utility module to help dynamically set properties on nodes and relationships.                                                                                                                              |\n| [temporal_graph_networks](https://memgraph.com/docs/mage/query-modules/python/temporal-graph-networks)           | Python | GNN temporal graph algorithm to predict links or do node classification.                                                                                                                                                          |\n| [tsp](https://memgraph.com/docs/mage/query-modules/python/tsp)                                                   | Python | An algorithm for finding the shortest possible route that visits each vertex exactly once.                                                                                                                                        |\n| [union_find](https://memgraph.com/docs/mage/query-modules/python/union-find)                                     | Python | A module with an algorithm that enables the user to check whether the given nodes belong to the same connected component.                                                                                                         |\n| [uuid_generator](https://memgraph.com/docs/mage/query-modules/cpp/uuid-generator)                                | C++    | A module that generates a new universally unique identifier (UUID).                                                                                                                                                               |\n| [vrp](https://memgraph.com/docs/mage/query-modules/python/vrp)                                                   | Python | An algorithm for finding the shortest route possible between the central depot and places to be visited. The algorithm can be solved with multiple vehicles that represent a visiting fleet.                                      |\n| [weakly_connected_components](https://memgraph.com/docs/mage/query-modules/cpp/weakly-connected-components)      | C++    | A module that finds weakly connected components in a graph.                                                                                                                                                                       |\n\n## Advanced configuration\n\n- [Advanced query module directories\n  setup](https://memgraph.com/docs/mage/installation/source#advanced-configuration)\n- [Developing MAGE with\n  Docker](https://memgraph.com/docs/mage/installation/docker-build#developing-mage-with-docker)\n\n## Testing MAGE\n\nTo test that everything is built, loaded, and working correctly, a python script\ncan be run. Make sure that the Memgraph instance with **MAGE** is up and\nrunning.\n\n```\n# Running unit tests for C++ and Python\npython3 test_unit\n\n# Running end-to-end tests\npython3 test_e2e\n```\n\nFurthermore, to test only specific end-to-end tests, you can add argument `-k`\nwith substring referring to the algorithm that needs to be tested. To test a\nmodule named `\u003cquery_module\u003e`, you would have to run `python3 test_e2e -k \u003cquery_module\u003e` where `\u003cquery_module\u003e` is the name of the specific module you\nwant to test.\n\n```\n# Running specific end-to-end tests\npython3 test_e2e -k weakly_connected_components\n```\n\n## Contributing\n\nWe encourage everyone to contribute with their own algorithm implementations and\nideas. If you want to contribute or report a bug, please take a look at the\n[contributions guide](CONTRIBUTING.md).\n\n## Code of Conduct\n\nEveryone participating in this project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this\ncode. Please report unacceptable behavior to \u003ctech@memgraph.com\u003e.\n\n## Feedback\n\nYour feedback is always welcome and valuable to us. Please don't hesitate to\npost on our [Community Forum](https://discourse.memgraph.com/).\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemgraph%2Fmage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmemgraph%2Fmage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemgraph%2Fmage/lists"}