On this page are the algorithms supported ( = done) and planned to be supported within Raphtory. We will keep this updated as new algorithms are implemented and new ideas are suggested by the community.

For anyone interested in getting involved in Raphtory the low hanging fruit () algorithms will be a great entry point for your first contribution. Once you have merged your algorithm feel free to come back here and tick it off with your github account linked next to it.

## Network models

- Configuration model (also for the randomisation of an empirical graph)
- Erdos-Renyi $G(N,p)$
- Erdos-Renyi $G(N,M)$
- Preferential attachment model
- Random geometric graphs
- Small-World Model

# Filtering

- Generic node and edge filtering (user provides a function)
- Global edge weight threshold
- Global vertex property threshold:
- Quantile based (“remove bottom $x$ proportion in terms of degree/pagerank etc”)
- Disparity filter (aka backbone extraction) https://www.pnas.org/doi/full/10.1073/pnas.0808904106
- Uniform node/edge sampling (nb it works for sampling with probability $p$ but not for saying “sample N nodes”)
- Largest connected component (doable but needs a “counter”/map type of graph state counting number of nodes with a given component id.)
- Ego-network
- $k$-cores

## Stochastic block models

- Tie decay networks
- Attributes
- Homophily
- Perhaps also monophily, see https://www.nature.com/articles/s41562-018-0321-8

## Node queries/centralities

- Degree/Weighted degree
- Value of label

## Edge based algorithms/metrics

- Average neighbour degree
- Degree assortativity
- Neighbourhood overlap (jaccard similarity of two nodes in terms of neighbours)
- Reciprocity

## Bipartite networks

- Different types of projections
- Specific randomisations
- Specific motifs (only even length cycles)

## Centrality

- Betweenness
- Closeness
- Degree/weighted degree/in-out degree
- Distinctiveness
- Eigenvector
- Harmonic
- Influence maximization
- Katz
- PageRank
- Weighted PageRank
- K-core (filter recursively based on degree)
- Rich-club coefficient (filter by degree then count edges remaining)

## Classification

- Graph Convolutional Network (GCN)
- Greedy Colouring

## Clustering

- Generalised Degree
- Square Clustering
- Local/average local clustering coefficient
- Transitivity (sometimes known as global clustering coefficient)

## Cliques

- Maximal Cliques (NP Complete)
- Maximum Quasi-Cliques

## Communities

- Belief propogation for SBM inference (ref from Tiago about possible distributed method https://arxiv.org/pdf/1109.3041.pdf)
- Community based outlier detection
- Extension of LPA to temporal multilayer setting
- Label propagation algorithm
- Leiden
- Louvain Distributed version: https://ieeexplore.ieee.org/document/8425242
- Mining Bursting communities: https://arxiv.org/pdf/1911.02780.pdf

## Graph signal analysis

- Graph Fourier Transform

## Graph comparison

- For temporal networks at different times

## Kernels + Embeddings

- Deepwalk
- Effective resistance
- Eigenmap
- Node2vec
- Random walk with restart

## Motifs

- 1 node 2-edge motifs
- Clustering coefficient
- I/O motifs (e.g. for transaction nets) (for motifs, one usually compares their number with that of aa properly randomised system, using e.g. a z score)
- Reciprocity of edges
- 3-node motifs

## Pathing

- Binary diffusion
- Cycle Detection
- Maxflow
- Minimum Spanning Tree
- Minimum Spanning Forest
- Preferential Flows
- Single source (DFS) Cycle

## Reachability

- Average shortest path length
- Connected components
- Descendants/Ancestors of a node – time respecting
- Graph diameter
- Is there a path from A to B
- Is there a time-respecting path from A to B
- Single source shortest path
- Shortest path from A to B
- Temporal connected components (based on temporal reachability)

## Similarity

- Cosine
- Jacard
- K Nearest Neighbour

## Spreading

- Linear consensus model, e.g. de Groot model
- Random Walks
- SI/SIR/SIS algorithms
- Watts linear cascade

## Temporal queries

- Inter-event-time distribution for the nodes, and for the edges
- List of inter-event times. For a given entity (or maybe globally) return a list of times between subsequent activities
- Time since last activity