Skip to main content

MAGE - Memgraph Advanced Graph Extensions ๐Ÿ”ฎ

MAGE, also known as Memgraph Advanced Graph Extensions, is an open-source repository that contains graph algorithms and modules in the form of query modules written by the team behind Memgraph and its users. You can find and contribute implementations of various algorithms in multiple programming languages, all runnable inside Memgraph. This project aims to give everyone the tools they need to tackle the most interesting and challenging graph analytics problems.

GitHub repository

You can find the official GitHub repository here: MAGE on GitHub.

MAGE query modules

Memgraph introduces the concept of query modules, user-defined procedures that extend the Cypher query language. These procedures are grouped into modules that can be loaded into Memgraph. You can find more information on query modules in the official Memgraph documentation.

Memgraph compatibility

With changes in Memgraph API, MAGE started to track version numbers. Check out the table below which will reveal MAGE compatibility with Memgraph versions.

MAGE versionMemgraph version
>= 1.0>= 2.0.0
^0>= 1.4.0 <= 1.6.1

Spellbook ๐Ÿ“– - Currently available modules

nxalgPythonA module that provides NetworkX integration with Memgraph and implements many NetworkX algorithms
graph_analyzerPythonThis Graph Analyzer query module offers insights about the stored graph or a subgraph.
distance_calculatorPythonModule for finding the geographical distance between two points defined with 'lng' and 'lat' coordinates.
tspPythonAn algorithm for finding the shortest possible route that visits each vertex exactly once.
set_coverPythonThe algorithm for finding minimum cost subcollection of sets that covers all elements of a universe.
graph_coloringPythonAlgorithm 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.
vrpPythonAlgorithm 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.
union_findPythonA module with an algorithm that enables the user to check whether the given nodes belong to the same connected component.
node_similartiyPythonA module that contains similarity measures for calculating the similarity between two nodes.
node2vecPythonAn algorithm for calculating node embeddings from static graph using second order walk sampling.
node2vec_onlinePythonAn algorithm for calculating node embeddings from a static graph using second-order walk sampling.
weakly_connected_componentsC++A module that finds weakly connected components in a graph.
biconnected_componentsC++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.
bipartite_matchingC++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.
cyclesC++Algorithm for detecting cycles on graphs
bridgesC++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.
betweenness centralityC++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.
uuid_generatorC++A module that generates a new universally unique identifier (UUID).