Releases: memgraph/mage
Release 1.3
MAGE goes to GPU - Annoucing MAGE 1.3
After algorithmic update, here comes one scalability and speed update. With the integration of NVIDIA cuGraph - collection of GPU accelerated graph algorithms created from NVIDIA engineers. In this update, Memgraph is brining several supported algorithms with GPU accelerated computations.
Supported algorithms
Integration with NVIDIA cuGraph enables Memgraph to scale fast and provide trivial interface for running the algorithms throught the openCypher query language. Different algorithms are supported in this release, more will come in the future where we'll follow the newest NVIDIA releases.
The list of supported algorithms
- Balanced cut clustering
- Betweenness centrality
- HITS
- Katz centrality
- Leiden community detection
- Louvain community detection
- PageRank
- Personalized PageRank
- Spectral Clustering
The list of supported utility tools:
What's Changed
- Fix node deletion in by @brunos252 in #141
- cuGraph x Memgraph integration by @gitbuda, @antepusic, @antoniofilipovic and @jmatak in #99
- Fix README to add cugraph modules. by @jmatak in #143
Full Changelog: v1.2...v1.3
Release 1.2
Happy to present our newest release - MAGE 1.2.
Lots of things are new compared to the previous release 1.1. With this release, MAGE is bringing novely in various different areas:
- Dynamic Graph Algorithms
- Temporal Graph Networks (TGN)
- Dynamic Betweenness Centrality
- Dynamic Katz Centrality
- Machine Learning
- Temporal Graph Networks (TGN)
- Static Graph Algorithms
- Louvain Community Detection
- Maximum Flow
- Static Katz Centrality
- Utility
- Import/Export module (JSON)
Dynamic Graph Algorithms
Temporal Graph Networks (TGN)
This algorithm brings a huge impact on the current graph analytics setting because it combines the best of two worlds - streaming with temporal data and graph machine learning. Use it to predict, classify, and embed nodes and edges in temporal/streaming use-case settings.
Dynamic Betweenness Centrality
Betweenness centrality is powered by the ratio of shortest paths traversing through the node of interest. By isolating the registered changes in the biconnected component, the dynamic algorithm saves the computational time and space when applying updates on a changed graph.
Dynamic Katz Centrality
Katz Centrality sets a higher rank to the nodes with a high amount of close-flowing paths. The more low-order paths we have, the more central the node is. To adapt the scale and calculate fast, the algorithm is approximative, which means that the calculated centralities may differ from the true values, but the rankings are preserved.
Machine Learning
Temporal Graph Networks (TGN)
Temporal Graph Network is the machine learning model developed by Twitter engineers - Temporal Graph Networks for Deep Learning on Dynamic Graphs by Rossi et.al.. The model allows the possibility of handling different temporal events occurring on graphs, such are node features updates, node deletions, edge deletions, and so on, and adapting the under-the-hood model for downstream prediction/classification task. Temporal Graph Networks are powered by Pytorch.
Static Graph Algorithms
Louvain community detection
The method that calculates communities by updating the modularity - measurement of density within and outside communities.
Maximum flow
An algorithm capable of calculating the maximum possible flow through relationships with the weighted capacity. This is a powerful tool when analyzing the flow of any resource in movements - like gas or electricity networks.
Static Katz Centrality
The static implementation of Katz Centrality - measurement proportional to the number of closer paths flowing through the node of interest.
Utility
Import and export module - with just the one Cypher query the whole graph can be exported in the file and then imported when needed again. Importing and exporting currently work with JSON format.
What's Changed
- Max flow implementation by @brunos252 in #125
- tsp.py comment and example query change by @brunos252 in #126
- Fix E2E testing by @antoniofilipovic in #128
- Fix ID validity check by @antepusic in #129
- Bump the version of Black formatter by @jmatak in #132
- Fix Continuous integration by @jmatak in #133
- Add export/import util by @katarinasupe in #100
- Community detection algorithm by @jmatak in #48
- Dynamic & static Katz centrality implementation by @jmatak in #117
- Dynamic betweenness centrality by @antepusic in #127
- Temporal graph networks implementation by @antoniofilipovic in #121
- Fix IsSubset checking for unordered sets by @jmatak in #135
New Contributors
- @brunos252 made their first contribution in #125
Full Changelog: v1.1.1...v1.2
Release 1.1.1 - Memgraph 2.2.0 integration
What's Changed
- Version of Memgraph bumped to
2.2.0
- Importing and exporting JSON data from
json_util
by @katarinasupe in #98 - New deployment build for ARM by @jbajic in #122
Full Changelog: v1.1...v1.1.1
Release 1.1.
Highlights
We are excited to announce the release of MAGE 1.1.
MAGE has acquired a few new skills since release 1.01 that he is excited to share with you:
- Approximative streaming PageRank
- Dynamic community detection
- Dynamic Node2Vec
- Node2Vec
Dynamic Node2Vec
Mapping graph entities into vector space makes it easier to process graph data. When the system is organized in such a way that data in the form of connections arrive in a very short period, then Dynamic Node2Vec can serve to map them into vector space in real-time. The local change algorithm solves the problem of scalability and stability that standard methods would have.
Dynamic PageRank
Dynamic PageRank is made as a substitute for its classic version which instead of restarting when a new version of the graph appears, just updates over the changes that have taken place. The algorithm is based on the work of Bahman Bahmani et. al. called "Fast Incremental and Personalized PageRank".
Dynamic Community Detection
Implementation of "LabelRankT: Incremental Community Detection in Dynamic Networks via Label Propagation" is based on a label propagation framework made for detecting communities on the graph. Made in C++ the algorithm shows the benefits of calculating communities on streaming data.
Node2Vec
The node2vec is a semi-supervised algorithmic framework for learning continuous feature representations for nodes in networks. The algorithm generates a mapping of nodes to a low-dimensional space of features that maximizes the likelihood of preserving network neighborhoods of nodes. By using a biased random walk procedure, it enables exploring diverse neighborhoods. In tasks such as multi-label classification and link prediction, node2vec shows great results.
What's Changed
- Fix memory leakage by @jmatak in #77
- New MAGE image by @jmatak in #80
- Update rsmgp-sys to the new MGP API by @antaljanosbenjamin in #78
- Change workflow trigger by @jbajic in #84
- Solve dependency vulnerability by @jmatak in #83
- Fix set_cover.greedy result type bug by @tonilastre in #76
- Update README.md by @katarinasupe in #86
- Add temporal type to rsmgp-sys by @antaljanosbenjamin in #82
- Implement node2vec by @antoniofilipovic in #81
- Fix MAGE installation on Linux based distro by @antoniofilipovic in #92
- Update GraphView abstraction by @jmatak in #85
- Approximative streaming PageRank by @jmatak in #69
- Clarify InsertDoubleValueResult inserts results by @antepusic in #97
- Weighted graph methods built for dynamic community detection by @antepusic in #89
- LabelRankT dynamic community detection algorithm by @antepusic in #66
- Initial MAGE PR template by @jmatak in #102
- Update MG image to 2.1.1 by @jmatak in #104
- Rename dynamic community detection by @jmatak in #106
- Update README for v1.1 by @jmatak in #108
New Contributors
- @antaljanosbenjamin made their first contribution in #78
- @jbajic made their first contribution in #84
- @tonilastre made their first contribution in #76
- @katarinasupe made their first contribution in #86
Full Changelog: v1.0...v1.1
Release 1.01 - Memgraph 2.1 integration
Integration of MAGE 1.0 with Memgraph 2.1
Release 1.0.
Release 0.1.
What's Changed
- Add root build script by @gitbuda in #3
- Add initial python modules by @gitbuda in #1
- Add initial cpp module by @gitbuda in #2
- Added tsp, setcover and distance by @Josipmrden in #8
- Merge docs into main by @g-despot in #10
- Fix installation related problems by @g-despot in #14
- Include Python tests for MAGE by @jmatak in #15
- C++ Clang formatting by @jmatak in #19
- C++ Memgraph Utility by @jmatak in #16
- Biconnected components module implementation by @jmatak in #17
- Update Memgraph base docker image by @MasterMedo in #24
- Update documentation links by @MasterMedo in #25
- Graph coloring algorithm by @SuzanaPratljacic in #18
- Find bridges algorithm by @jmatak in #22
- Fix graph coloring parallelism by @SuzanaPratljacic in #29
- Fix random mutation choice on empty sequence by @SuzanaPratljacic in #31
- Maximum bipartite matching algorithm by @jmatak in #30
- Cycles detection algorithm by @jmatak in #27
- Clean database after E2E test by @jmatak in #32
- Vector comparison utils by @SuzanaPratljacic in #33
- Fix and test weakly connected components by @jmatak in #37
- Add error margin to e2e tests. Remove Neo4j client by @jmatak in #36
- Documentation update by @jmatak in #38
- Directed GraphView implementation. mg_utility documentation by @jmatak in #35
- Betweenness centrality algorithm by @SuzanaPratljacic in #34
- Remove unnecessary files by @SuzanaPratljacic in #40
- Init pagerank module by @jmatak in #5
- Publish MAGE Docker Hub image by @jmatak in #39
- Documentation update by @jmatak in #41
- Add VRP (vehicle routing problem) module by @Josipmrden in #42
- Add Rust query modules infrastructure by @gitbuda in #12
- Add betweenness centrality parallel implementation by @SuzanaPratljacic in #45
- Mofified set cover result for better usability by @Josipmrden in #47
- Node similarity by @Arya513 in #51
- Add tested stand-alone implementation of union-find by @antepusic in #53
- [main < T044-MAGE] Add optional -p flag to copy files to folder by @antoniofilipovic in #55
- Add UUID generator module by @g-despot in #57
- Fix betweenness centrality algorithm name typo by @jmatak in #61
- Change UUID module name to uuid_generator.get() by @jmatak in #63
- Add filtering to E2E tests. by @jmatak in #60
- Initial version of checkpoint testing suitable for online algorithms by @jmatak in #62
- Remove cargo tarpaulin and local MG download by @jmatak in #67
- Add online node2vec by @SuzanaPratljacic in #49
- Add black-box script for local build, reduce Docker image size by @antoniofilipovic in #56
- Add version on python test requirements by @antoniofilipovic in #73
- Add gqlalchemy by @antoniofilipovic in #74
- Add push to Docker hub with TAG on image by @antoniofilipovic in #71
New Contributors
- @gitbuda made their first contribution in #3
- @Josipmrden made their first contribution in #8
- @g-despot made their first contribution in #10
- @MasterMedo made their first contribution in #24
- @SuzanaPratljacic made their first contribution in #18
- @Arya513 made their first contribution in #51
- @antepusic made their first contribution in #53
Full Changelog: https://github.com/memgraph/mage/commits/v0.1