🌍 Website
📒 Documentation
Pometry
🧙🏻 Tutorial
🐛 Report a Bug
Join Slack
Raphtory is a unified analytics engine for large-scale graph analysis, allowing you to run complex graph queries no matter where your data lives and what format it is in. Besides performance and scalability, what makes Raphtory cool is its ability to represent and explore the history of a complex system, from simply “time travelling” through data, to executing richer analysis like taint tracking, temporal reachability, or mining temporal motifs.
Raphtory is easy to use: One-line pip installation and smooth integration with Pandas for input and output.
Raphtory is expressive: Designed to represent all types of graph queries and temporal graphs in mind, with a thoughtfully developed API for exploring your data across its history.
Raphtory is scalable: Built on top of Apache Arrow’s storage model and gRPC for client communication, Raphtory can be run on a laptop or scaled up to a cluster for results on terabyte scale graphs.
- Raphtory on the Alan Turing Institute Blog
- Talk on Raphtory at AI UK 2022
- Talk on Raphtory at KGC 2022
- Talk on Raphtory at NetSciX 2022
# Import Raphtory
import PyRaphtory
# Create a new local or distributed context
ctx = PyRaphtory.local()
graph = ctx.new_graph()
# Add some data to your graph
graph.add_vertex(1, 1)
graph.add_vertex(2, 2)
graph.add_vertex(3, 3)
graph.add_edge(4, 1, 2)
graph.add_edge(4, 1, 3)
# Collect some simple vertex metrics
# Ran across a range of the data with incremental windowing
df = graph
.range(1,4,1)
.window(1)
.select(lambda vertex: Row(vertex.name(), vertex.out_degree(), vertex.in_degree()))
.to_df(["name", "out_degree", "in_degree"])
# Preview DataFrame
df
| | timestamp | window | name | out_degree | in_degree |
|---:|------------:|---------:|-------:|-------------:|------------:|
| 0 | 1 | 1 | 1 | 0 | 0 |
| 1 | 2 | 1 | 2 | 0 | 0 |
| 2 | 3 | 1 | 3 | 0 | 0 |
| 3 | 4 | 1 | 1 | 2 | 0 |
| 4 | 4 | 1 | 2 | 0 | 1 |
| 5 | 4 | 1 | 3 | 0 | 1 |
You can try out Raphtory for yourself in a Jupyter Notebook. Please click here to launch the notebook.
Raphtory is available for both Python and Scala / Java, with support for Rust planned in the 0.3.0 release.
We recommend installing the PyRaphtory client for Python, which contains all the functions to create a graph, run algorithms and analyse results. We also support Conda, but pip is the preferred option.
Make sure you have Python v3.9 or above. It is also recommended that you install Raphtory through conda, virtualenv or pyenv as a best practice.
pip install requests pandas pemja cloudpickle parsy
pip install -i https://test.pypi.org/simple/ pyraphtory_jvm==0.2.0a7
pip install -i https://test.pypi.org/simple/ pyraphtory==0.2.0a7
If you would like to do something more complex, follow these links:
- Documentation
- Complete list of available algorithms in Raphtory
- Writing your own algorithm in Raphtory
We are currently running a bounty board for anyone that wishes to contribute to Raphtory, whether it be cool features or yet to be implemented algorithms.
All contributors receive swag and small prizes!
To get you started, we currently have a list of algorithms that we would like to build into Raphtory. With a number of 🍇 low hanging fruit ones. Make sure to check it out at https://www.raphtory.com/algorithm-bounty/
-
- we are always happy to answer any questions and chat about the project! Feel free to join the #raphtory-development and #askaway channel to discuss current issues or ask any questions.
Want to get involved? Please join the Raphtory Slack group and speak with us on how you could pitch in!
Raphtory is licensed under the terms of the Apache License (check out our LICENSE file).