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
**MultilayerGraphs.jl** is a Julia package for the construction, manipulation and analysis of multilayer graphs [extending Graphs.jl](https://juliagraphs.org/Graphs.jl/dev/ecosystem/interface/).
16
+
**MultilayerGraphs.jl** is a Julia package for the creation, manipulation and analysis of the structure, dynamics and functions of multilayer graphs [extending Graphs.jl](https://juliagraphs.org/Graphs.jl/dev/ecosystem/interface/).
17
17
18
18
## Overview
19
19
20
-
**MultilayerGraphs.jl** implements the mathematical formulation of multilayer graphs proposed by [De Domenico et al. (2013)](https://doi.org/10.1103/PhysRevX.3.041022). It mainly revolves around two custom types, [`MultilayerGraph`](https://juliagraphs.org/MultilayerGraphs.jl/dev/internals/#MultilayerGraphs.MultilayerGraph) and [`MultilayerDiGraph`](https://juliagraphs.org/MultilayerGraphs.jl/dev/internals/#MultilayerGraphs.MultilayerDiGraph), encoding undirected and directed multilayer graphs respectively.
20
+
**MultilayerGraphs.jl** implements the mathematical formulation of multilayer graphs proposed by [De Domenico et al. (2013)](https://doi.org/10.1103/PhysRevX.3.041022) together with insights from [Kivelä et al. (2014)](https://doi.org/10.1093/comnet/cnu016) and [Bianconi (2018)](https://global.oup.com/academic/product/multilayer-networks-9780192865540). It mainly revolves around two custom types, [`MultilayerGraph`](@ref) and [`MultilayerDiGraph`](@ref), encoding undirected and directed multilayer graphs respectively.
21
21
22
-
Roughly speaking, a multilayer graph is a collection of ***layers***, i.e. graphs whose vertices are representations of the same set of nodes, and ***interlayers***, i.e the [bipartite graphs](https://en.wikipedia.org/wiki/Bipartite_graph) whose vertices are those of any two layers and whose edges are those between vertices of the same two layers.
22
+
Roughly speaking, a multilayer graph is a collection of ***layers***, i.e. graphs whose vertices are representations of the same set of nodes (not all nodes have to be represented in every layer), and ***interlayers***, i.e the [bipartite graphs](https://en.wikipedia.org/wiki/Bipartite_graph) whose two sets of vertices are those of any two layers. A vertex of a multilayer graph will be represented via a [`MultilayerVertex`](@ref) struct, and nodes via a [`Node`](@ref) struct.
23
23
24
-
[`MultilayerGraph`](https://juliagraphs.org/MultilayerGraphs.jl/dev/internals/#MultilayerGraphs.MultilayerGraph) and [`MultilayerDiGraph`](https://juliagraphs.org/MultilayerGraphs.jl/dev/internals/#MultilayerGraphs.MultilayerDiGraph) are fully-fledged [Graphs.jl](https://github.com/JuliaGraphs/Graphs.jl) extensions. Both structs are designed so that their layers and interlayers can be of any type (as long as they are Graphs.jl extensions themselves) and they need not be all of the same type. It is anyway required that all layers and interlayers of [`MultilayerGraph`](https://juliagraphs.org/MultilayerGraphs.jl/dev/internals/#MultilayerGraphs.MultilayerGraph) and [`MultilayerDiGraph`](https://juliagraphs.org/MultilayerGraphs.jl/dev/internals/#MultilayerGraphs.MultilayerDiGraph) are respectively undirected and directed. Directedness is checked via the `IsDirected` trait defined in Graphs.jl adopting [SimpleTraits.jl](https://github.com/mauro3/SimpleTraits.jl). Since the layers' and interlayers' graph types don't need to be the same, multilayer graph types are considered weighted graphs by default, and thus are assigned the trait `IsWeighted`.
24
+
[`MultilayerGraph`](@ref) and [`MultilayerDiGraph`](@ref) are fully-fledged [Graphs.jl](https://github.com/JuliaGraphs/Graphs.jl) extensions. Both structs are designed so that their layers and interlayers can be of any type (as long as they are Graphs.jl extensions themselves) and they can be of different types. It is anyway required that all layers and interlayers of [`MultilayerGraph`](@ref) and [`MultilayerDiGraph`](@ref) are respectively undirected and directed.
25
+
26
+
Both [`MultilayerGraph`](@ref) and [`MultilayerDiGraph`](@ref) allow for vertex and edge metadata, provided that the layer (or interlayer) vertex or the layer (or interlayer) edge belongs to supports metadata.
25
27
26
28
## Installation
27
29
28
30
Press `]` in the Julia REPL and then
29
31
30
-
```julia
32
+
```nothing
31
33
pkg> add MultilayerGraphs
32
34
```
33
35
34
-
## Tutorial
35
-
36
-
In the package documentation we have prepared a [tutorial](https://juliagraphs.org/MultilayerGraphs.jl/stable/#Tutorial) to illustrate how to define, handle and analyse a [`MultilayerGraph`](https://juliagraphs.org/MultilayerGraphs.jl/dev/internals/#MultilayerGraphs.MultilayerGraph) (the directed version is completely analogous).
36
+
## Usage
37
37
38
-
## Future Developments
38
+
In the package documentation you can find a [tutorial](https://juliagraphs.org/MultilayerGraphs.jl/stable/#Tutorial) that illustrates all its main features.
39
39
40
-
Here we highlight the major future developments we have currently identified:
40
+
## Future Developments
41
41
42
-
-[] Better integration with [Graphs.jl](https://github.com/JuliaGraphs/Graphs.jl). We've recently opened an [issue](https://github.com/JuliaGraphs/Graphs.jl/issues/165) on Graphs.jl illustrating our proposals;
43
-
-[] Better integration with [MetaGraphs.jl](https://github.com/JuliaGraphs/MetaGraphs.jl) and [SimpleValueGraphs.jl](https://github.com/simonschoelly/SimpleValueGraphs.jl). Although it is possible to specify a `MetaGraph` and `SimpleValueGraph` as layer and/or interlayer, they are not yet fully supported (i.e. API may be a little unfit for them). An example using MetaGraphs, SimpleValueGraphs can be found at our announcement post [here]();
44
-
-[] Optimise the adjacency tensor;
45
-
-[] More intuitive constructor for `Interlayer`;
46
-
-[] Implement specialised and simplified API for `MultiplexGraph`;
47
-
-[] Implement visualisation functionalities;
48
-
-[] Implement other features and methods for the analysis of multilayer graphs following the scientific literature:
49
-
- Kivelä et al. (2014) [Multilayer networks](https://doi.org/10.1093/comnet/cnu016). *Journal of Complex Networks*
50
-
- Cozzo et al. (2015) [Structure of triadic relations in multiplex networks](https://doi.org/10.1088/1367-2630/17/7/073029). *New Journal of Physics*
51
-
- De Domenico et al. (2015) [MuxViz: a tool for multilayer analysis and visualization of networks](https://doi.org/10.1093/comnet/cnu038). *Journal of Complex Networks*
52
-
- De Domenico et al. (2015) [Ranking in interconnected multilayer networks reveals versatile nodes](https://doi.org/10.1038/ncomms7868). *Nature Communications*
53
-
- De Domenico (2022) [Multilayer Networks: Analysis and Visualization](https://doi.org/10.1007/978-3-030-75718-2). *Springer Cham*
54
-
- Artime et al. (2022) [Multilayer Network Science: From Cells to Societies](https://doi.org/10.1017/9781009085809). *Cambridge Elements*
0 commit comments