Skip to content

Commit 43f9bcd

Browse files
authored
Merge branch 'JOSS' into main
2 parents 279c82f + e0d29a7 commit 43f9bcd

File tree

5 files changed

+758
-0
lines changed

5 files changed

+758
-0
lines changed

.github/workflows/PaperDraft.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
on: [push]
2+
3+
jobs:
4+
paper:
5+
runs-on: ubuntu-latest
6+
name: Paper Draft
7+
steps:
8+
- name: Checkout
9+
uses: actions/checkout@v2
10+
- name: Build draft PDF
11+
uses: openjournals/openjournals-draft-action@master
12+
with:
13+
journal: joss
14+
# This should be the path to the paper within your repo.
15+
paper-path: paper/paper.md
16+
- name: Upload
17+
uses: actions/upload-artifact@v1
18+
with:
19+
name: paper
20+
# This is the output path where Pandoc will write the compiled
21+
# PDF. Note, this should be the same directory as the input
22+
# paper.md
23+
path: paper/paper.pdf

paper/JuliaCon2023.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# JuliaCon 2023
2+
3+
## Title
4+
5+
MultilayerGraphs.jl: Multilayer Network Science in Julia
6+
7+
## Session Type
8+
9+
Lightning talk (10 minutes)
10+
11+
## Abstract
12+
13+
**MultilayerGraphs.jl** is a Julia package for the creation, manipulation and analysis of multilayer graphs, which have been adopted to model of a wide range of complex systems from bio-chemical to socio-technical networks.
14+
15+
## Description
16+
17+
[**MultilayerGraphs.jl**](https://github.com/JuliaGraphs/MultilayerGraphs.jl) is a Julia package for the creation, manipulation and analysis of the structure, dynamics and functions of multilayer graphs.
18+
19+
A multilayer graph is a graph consisting of multiple subgraphs called **layers** which can be interconnected through [bipartite graphs](https://en.wikipedia.org/wiki/Bipartite_graph) called **interlayers**.
20+
21+
Several theoretical frameworks have been proposed to formally subsume all instances of multilayer graphs ([De Domenico et al. (2013)](https://doi.org/10.1103/physrevx.3.041022); [Kivelä et al. (2014)](https://doi.org/10.1093/comnet/cnu016); [Bianconi (2018)](https://doi.org/10.1093/oso/9780198753919.001.0001); [De Domenico (2022)](https://doi.org/10.1007/978-3-030-75718-2)).
22+
23+
Multilayer graphs have been adopted to model the structure and dynamics of a wide spectrum of high-dimensional, non-linear, multi-scale, time-dependent complex systems including physical, chemical, biological, neuronal, socio-technical, epidemiological, ecological and economic networks ([Cozzo et al. (2013)](https://doi.org/10.1103/physreve.88.050801); [Estrada and Gomez-Gardenes (2014)](https://doi.org/10.1103/physreve.89.042819); [Baggio et al. (2016)](https://doi.org/10.1073/pnas.1604401113); [DeDomenico et al. (2016)](https://doi.org/10.1038/nphys3865); [Amato et al. (2017)](https://doi.org/10.1038/s41598-017-06933-2); [DeDomenico (2017)](https://doi.org/10.1093/gigascience/gix004); [Timteo et al. (2018)](https://doi.org/10.1038/s41467-017-02658-y); [Aleta et al. (2020)](https://doi.org/10.1038/s41562-020-0931-9); [Aleta et al. (2022)](https://doi.org/10.1073/pnas.2112182119)).
24+
25+
MultilayerGraphs.jl is integrated within the **JuliaGraphs** ecosystem extending [Graphs.jl](https://github.com/JuliaGraphs/Graphs.jl) with several multilayer-specific methods and metrics including the multilayer eigenvector centrality, the multilayer modularity and the Von Newman entropy.
26+
27+
The package features an implementation that maps a standard integer-labelled vertex representation to a more user-friendly framework exporting all the objects a practitioner would expect such as nodes (`Node`), vertices (`MultilayerVertex`), layers (`Layer`), interlayers (`Interlayer`), etc.
28+
29+
The two main data structures are `MultilayerGraph` and `MultilayerDiGraph`: collections of layers connected through interlayers.
30+
31+
The **vertices** of a multilayer graph are representations of one set of distinct objects called `Node`s. Each layer may represent all the node set or just a subset of it. The vertices of `Multilayer(Di)Graph` are implemented via the `MultilayerVertex` custom type. Each `MultilayerVertex` encodes information about the node it represents, the layer it belongs to and its metadata.
32+
33+
Both the **intra-layer** and **inter-layer edges** are embedded in the `MultilayerEdge` struct, whose arguments are the two connected multilayer vertices, the edge weight and its metadata. It's important to highlight that `Multilayer(Di)Graph`s are weighted and able to store metadata by default.
34+
35+
The **layers** are implemented via the `Layer` struct composed of an underlying graph and a mapping from its integer-labelled vertices to the collection of `MultilayerVertex`s the layer represents. **Interlayers** are similarly implemented via the `Interlayer` mutable struct, and they are generally constructed by providing the two connected layers, the (multilayer) edge list between them and a graph. This usage of underlying graphs allows for an easier debugging procedure during construction and a more intuitive analysis afterwards allowing the package to leverage all the features of the JuliaGraphs ecosystem so that it can be effectively considered as a real proving ground of its internal consistency.
36+
37+
The `Multilayer(Di)Graph` structs are weighted and endowed with the functionality to store both vertex-level and edge-level metadata by default so that at any moment the user may add or remove a `Layer` or specify an `Interlayer` and since different layers and interlayers could be better represented by graphs that are weighted or unweighted and with or without metadata, it was crucial for us to provide the most general and adaptable structure. A `Multilayer(Di)Graph` is instantiated by providing the ordered list of layers and the list of interlayers to the constructor. The latter are automatically specified, so there is no need to instantiate all of them.
38+
39+
Finally, MultilayerGraphs.jl has been integrated within the **JuliaDynamics** ecosystem so that any `Multilayer(Di)Graph` can be taken as an argument to the `GraphSpace` constructor in [Agents.jl](https://github.com/JuliaDynamics/Agents.jl).
40+
41+
For a more comprehensive exploration of the package features and functionalities we strongly recommend consulting the [tutorial](https://juliagraphs.org/MultilayerGraphs.jl/stable/#Tutorial) included in the package documentation.
42+
43+
## Notes
44+
45+
### Statement of Need
46+
47+
At the best of our knowledge there are currently no software packages dedicated to the creation, manipulation and analysis of multilayer graphs implemented in the Julia language apart from MultilayerGraphs.jl itself.
48+
49+
### Future Developments
50+
51+
See the relevant [issues](https://github.com/JuliaGraphs/MultilayerGraphs.jl/issues).
52+
53+
### Publication
54+
55+
We [are are going to submit / have submitted] a [paper](https://github.com/JuliaGraphs/MultilayerGraphs.jl/blob/JOSS/paper/paper.pdf) to [JOSS](https://joss.theoj.org) presenting MultilayerGraphs.jl.
56+
57+
MultilayerGraphs.jl has been published on the following open access websites:
58+
- [GitHub](https://github.com/JuliaGraphs/MultilayerGraphs.jl);
59+
- [Zenodo](https://doi.org/10.5281/zenodo.7009172);
60+
- [Research Software Directory](https://research-software-directory.org/software/multilayergraphs).
61+
62+
MultilayerGraphs.jl and its features were announced on the following platforms:
63+
- [Discourse](https://discourse.julialang.org/t/ann-multilayergraphs-jl-a-package-to-construct-handle-and-analyse-multilayer-graphs/85988);
64+
- [Forem](https://forem.julialang.org/inphyt/ann-multilayergraphsjl-a-package-to-construct-handle-and-analyse-multilayer-graphs-3k22);
65+
- [Twitter](https://twitter.com/In_Phy_T/status/1560594513189638146).
66+
67+
## Session Image
68+
69+
Social preview or logo.
70+
71+
## Additional Speaker
72+
73+
Claudio's email address (the same used for GitHub?).

0 commit comments

Comments
 (0)