You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* bump pyyaml version
* remove open house event
* auto update people list
* remove people list
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* language level content review
* Clarify discussion of event ordering docs/user-guide/persistent-graph/2_ambiguity.md
* update hanging deletions examples
* remove pyvis
* update hanging deletions examples
Copy file name to clipboardExpand all lines: docs/index.md
+2-9Lines changed: 2 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,22 +61,19 @@ Below you can see an example of these APIs and the sort of questions you can ask
61
61
```
62
62
63
63
### GraphQL Playground
64
-
Once you have built some graphs, you can easily host them via Graphql. When you host a Raphtory GraphQL server you get a web playground bundled in, accessible on the same port within your browser (defaulting to 1736). Here you can experiment with queries on your graphs and explore the schema. An example of the playground can be seen below, running a similar query as in the python example above.
64
+
Once you have built some graphs, you can easily host them via Graphql. When you host a Raphtory GraphQL server you also get a web playground. Here you can experiment with queries on your graphs and explore the schema. You can see an example of the playground below, running a similar query to the previous python example.
Once the GraphQL server is running, you can access the UI directly. If the server is hosted on port 1736, the UI will be available at http://localhost:1736. The UI allows you to search for data in Raphtory, explore connections, and visualise the graph effortlessly.
70
-
69
+
Once the GraphQL server is running, you can access the UI directly. If the server is hosted on port `1736`, the UI will be available at `http://localhost:1736`. This interface allows you to search for data in Raphtory, explore connections, and visualise the graph effortlessly.
71
70
72
71

73
72
74
73
## Excited to give it a go?
75
74
76
75
This site has been created to get new users of `Raphtory` up to speed by explaining the most important features via meaningful examples. You can get started straight away by heading to the [User Guide](user-guide/installation.md). If you prefer learning via APIs and reading into specific object or functions, your best best it to visit the API documentation: [Python](https://docs.raphtory.com/) | [Rust](https://docs.rs/raphtory/latest/raphtory/).
77
76
78
-
79
-
80
77
## Community
81
78
82
79
Join the growing community of open-source enthusiasts using Raphtory to power their graph analysis projects!
@@ -85,17 +82,13 @@ Join the growing community of open-source enthusiasts using Raphtory to power th
85
82
86
83
- Join our [](https://join.slack.com/t/raphtory/shared_invite/zt-xbebws9j-VgPIFRleJFJBwmpf81tvxA) to chat with us and get answers to your questions!
The best way to start contributing is to give Raphtory a :star: on github! Once you have done that, if you want to raise an issue, submit a PR or give us some feedback, you can checkout our [Contributing Guide](https://github.com/Pometry/Raphtory/blob/master/CONTRIBUTING.md), the open [list of issues](https://github.com/Pometry/Raphtory/issues), or hit us up directly on [slack](https://join.slack.com/t/raphtory/shared_invite/zt-xbebws9j-VgPIFRleJFJBwmpf81tvxA).
96
91
97
-
98
-
99
92
## License
100
93
101
94
Raphtory is licensed under the terms of the GNU General Public License v3.0.
Copy file name to clipboardExpand all lines: docs/user-guide/algorithms/1_intro.md
+10-2Lines changed: 10 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,16 @@
1
1
# Running algorithms
2
2
3
-
Within Raphtory we have implemented many of the standard algorithms you may expect within a graph library, but have also added several temporal algorithms such as `Temporal Reachability` and `Temporal Motifs`.
3
+
Raphtory implements many of the standard algorithms you expect within a graph library, but also has several temporal algorithms such as `Temporal Reachability` and `Temporal Motifs`.
4
4
5
-
Before we look at the different types of algorithms, let's first load in some data. For these examples we are going to use the [One graph to rule them all](https://arxiv.org/abs/2210.07871) dataset, which maps the co-occurrence of characters within the Lord of The Rings books. This dataset is a simple edge list, consisting of the source character, destination character and the sentence they occurred together in (which we shall use as a timestamp). The dataframe for this can be seen in the output below.
5
+
Raphtory categorizes algorithms into `graphwide` and `node centric` algorithms.
6
+
7
+
-`graphwide`: returns one value for the whole graph.
8
+
9
+
-`node centric`: returns one value for each node in the graph
10
+
11
+
For these examples we are going to use the [One graph to rule them all](https://arxiv.org/abs/2210.07871) dataset, which maps the co-occurrence of characters in the Lord of The Rings books.
12
+
13
+
This dataset is a simple edge list, consisting of the source character, destination character and the sentence they occurred together in (which we use as a timestamp). The dataframe for this can be seen in the output below.
Copy file name to clipboardExpand all lines: docs/user-guide/algorithms/2_graph-algorithms.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,12 @@
1
1
# Graph wide algorithms
2
-
The first category of algorithms we can run are `graph wide`, returning one value for the whole graph. There are many useful metrics that fall into this category, of which we run three in the code below:
2
+
3
+
The following examples cover three `graphwide` algorithms:
3
4
4
5
*[Graph Density](https://en.wikipedia.org/wiki/Dense_graph) - which represents the ratio between the edges present in a graph and the maximum number of edges that the graph could contain.
5
6
*[Clustering coefficient](https://en.wikipedia.org/wiki/Clustering_coefficient) - which is a measure of the degree to which nodes in a graph tend to cluster together e.g. how many of your friends are also friends.
6
7
*[Reciprocity](https://en.wikipedia.org/wiki/Reciprocity_(network_science)) - which is a measure of the likelihood of nodes in a directed network to be mutually connected e.g. if you follow someone on twitter, whats the change of them following you back.
7
8
8
-
As you can see below, to run an algorithm you simply need to import the algorithm package, choose an algorithm to run and hand it your graph.
9
+
To run an algorithm you simply need to import the algorithm package, choose an algorithm to run, and give it your graph.
Copy file name to clipboardExpand all lines: docs/user-guide/algorithms/3_node-algorithms.md
+13-15Lines changed: 13 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,14 @@
1
-
# Node centric algorithms
2
-
The second category of algorithms are `node centric` and return a value for each node in the graph. These results are stored within a `NodeState` object which has functions for sorting, grouping, top_k and conversion to dataframes. To demonstrate these functions below we have run [PageRank](https://en.wikipedia.org/wiki/PageRank) and [Weakly Connected Components](https://en.wikipedia.org/wiki/Component_(graph_theory)).
1
+
# Node centric algorithms
3
2
4
-
## Continuous Results (PageRank)
5
-
`PageRank` is an centrality metric developed by Google's founders to rank web pages in search engine results based on their importance and relevance. This has since become a standard ranking algorithm for a whole host of other usecases.
3
+
The second category of algorithms are `node centric` which return a value for each node in the graph. These results are stored within a `NodeState` object which has functions for sorting, grouping, top_k, and conversion to dataframes.
6
4
7
-
Raphtory's implementation returns the score for each node - these are continuous values, meaning we can discover the most important characters in our Lord of the Rings dataset via `top_k()`.
5
+
## Continuous Results: PageRank
8
6
9
-
In the code below we first get the result of an individual character (Gandalf), followed by the values of the top 5 most important characters.
7
+
[PageRank](https://en.wikipedia.org/wiki/PageRank) is an centrality metric developed by Google's founders to rank web pages in search engine results based on their importance and relevance. This has since become a standard ranking algorithm for a whole host of other usecases.
8
+
9
+
Raphtory's implementation returns the score for each node. These are **continuous values**, meaning we can discover the most important characters in our Lord of the Rings dataset via `top_k()`.
10
+
11
+
In the example below we first get the result of an individual character (Gandalf), followed by the values of the top 5 most important characters.
`Weakly connected components` in a directed graph are `subgraphs` where every node is reachable from every other node (if edge direction is ignored).
23
+
[Weakly connected components](https://en.wikipedia.org/wiki/Component_(graph_theory)) in a directed graph are `subgraphs` where every node is reachable from every other node if edge direction is ignored.
22
24
23
-
This algorithm returns the id of the component each node is a member of - these are discrete values, meaning we can use `groups` to find additional insights like the size of the [largest connected component](https://en.wikipedia.org/wiki/Giant_component).
24
-
25
-
In the code below we first run the algorithm and print the result so we can see what it looks like.
25
+
For each node this algorithm finds which component it is a member of and returns the id of the component. These are **discrete values**, meaning we can use `groups` to find additional insights like the size of the [largest connected component](https://en.wikipedia.org/wiki/Giant_component).
26
26
27
27
!!! info
28
28
29
29
The `component ID (value)` is generated from the lowest `node ID` in the component.
30
30
31
-
Next we take the results and group the nodes by these IDs and calculate the size of the largest component.
32
-
33
-
!!! info
31
+
In the example below we first run the algorithm and print the result so we can see what it looks like.
34
32
35
-
Almost all nodes are within this component (134 of the 139), as is typical for social networks.
33
+
Next we take the results and group the nodes by these IDs and calculate the size of the largest component. Almost all nodes are within this component (134 of the 139), as is typical for social networks.
As with all the queries we saw in the [previous chapter](../views/1_intro.md), both `graphwide` and `node centric` algorithms can be run on `graph views`. This allows us to see how results change over time, run algorithms on subsets of the layers or remove specific nodes from the graph to see the impact this has.
3
+
Both `graphwide` and `node centric` algorithms can be run on `graph views`. This allows us to see how results change over time, run algorithms on subsets of the layers, or remove specific nodes from the graph to see the impact this has.
4
4
5
-
To demonstrate this, below is an example of how you could track Gandaf's importance over the course of the story using rolling windows and the `PageRank` algorithm.
5
+
To demonstrate this, the following example shows how you could track Gandalf's importance over the course of the story using rolling windows and the `PageRank` algorithm.
6
6
7
7
Within each windowed graph we use the `NodeState` api to extract Gandalf's score and record it alongside the earliest timestamp in the window, which can then be plotted via matplotlib.
0 commit comments