lejohnyjohn / Raphtory

Raphtory: A Distributed Temporal Graph Processing System

Home Page:https://www.Raphtory.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Raphtory

Test and Build Latest Release Issues Launch Notebook

🌍 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.

Articles and Talks about Raphtory

Running a basic example

# 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 Binder to launch the notebook.

Installing Raphtory

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

Want to do something more complex?

If you would like to do something more complex, follow these links:

Bounty board

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/

Community

  • Slack the latest developments on the official Raphtory Twitter

  • Slack - 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.

Contributors

Want to get involved? Please join the Raphtory Slack group and speak with us on how you could pitch in!

License

Raphtory is licensed under the terms of the Apache License (check out our LICENSE file).

About

Raphtory: A Distributed Temporal Graph Processing System

https://www.Raphtory.com

License:Apache License 2.0


Languages

Language:Scala 71.0%Language:Java 24.0%Language:Python 4.6%Language:Makefile 0.3%Language:Shell 0.1%Language:Dockerfile 0.0%