JuliaGraphs / MultilayerGraphs.jl

A Julia package for the creation, manipulation and analysis of the structure, dynamics and functions of multilayer graphs.
https://juliagraphs.org/MultilayerGraphs.jl/dev
MIT License
118 stars 3 forks source link

Implement dimensions of multiplexity (aspects) #100

Open ClaudMor opened 1 year ago

ClaudMor commented 1 year ago

For some application, it could be useful to impose a hierarchy to Layers, where each step of the ladder may contain more than one Layer. All Layers in one step would be considered "at the same hierarchical level".

Although the current way to collect Layers - i.e. Vector{Layer}- allows for an hierarchical structure given by the order, it still lacks horizontality. We may then transition from a Vector{Layer} to an OrderedDict{String, Vector{Layer}} where the Strings would name the aspects, and the Layers belonging to each aspect would need an order to be still able to construct the tensorial/matricial representations (could this be relaxed since the way indexing of such representations works right now does not require the user to remember which order Layers where added in? If so, a more elegant and efficient OrderedDict{String, Set{Layer}} could be used).

This would surely require:

  1. Implement an add_aspect! function;
  2. Modify add_layer! so that it also requires the aspect the Layer should be assigned to.