Skip to content

Commit ed37841

Browse files
InterdisciplinaryPhysicsTeampitmonticoneClaudMor
committed
Update
TODO: - write tests for the constructors of layers that use vector of nodes as vertices and vectors of 2-tuples of MultilayerVertexs as edges - Bring the changes to the Interlayer Co-Authored-By: Pietro Monticone <38562595+pitmonticone@users.noreply.github.com> Co-Authored-By: Claudio Moroni <43729990+ClaudMor@users.noreply.github.com>
1 parent c67a427 commit ed37841

File tree

5 files changed

+12
-22
lines changed

5 files changed

+12
-22
lines changed

src/MultilayerGraphs.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export
5959
mv_outneighbors,
6060
neighbors,
6161
mv_neighbors,
62+
get_v,
6263
edgetype,
6364
has_edge,
6465
ne,

src/abstractmultilayerugraph.jl

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -272,13 +272,10 @@ function get_subgraph(
272272
v for (v, mv) in collect(mg.v_V_associations) if mv.layer == descriptor.name
273273
])
274274

275-
_vertices = get_rich_mv.(Ref(mg), vs)#MultilayerVertex{descriptor.name}[]
275+
_vertices = get_rich_mv.(Ref(mg), vs)
276276

277-
#= for (v,mv) in zip(vs, getindex.(Ref(mg.v_V_associations),vs))
278-
push!(_vertices, get_rich_mv(mg, v)) #MV(mv.node, mv.layer, mg.v_metadata_dict[v] )
279-
end
280-
=#
281-
edge_list = MultilayerEdge{U}[]#MultilayerEdge{U}[MultilayerEdge(src, vertex(halfedge), weight(halfedge), metadata(halfedge)) for (src,halfedge) in zip(_vertices,mg.fadjlist[vs]) if vertex(halfedge).layer == descriptor.name && get_v(mg, vertex(halfedge)) >= get_v(mg,src) ]
277+
278+
edge_list = MultilayerEdge{U}[]
282279

283280
for (src_v, halfedges_from_src) in zip(vs, getindex.(Ref(mg.fadjlist), vs))
284281
src_bare_V = mg.v_V_associations[src_v]

src/subgraphs/abstractsubgraph.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ end
135135
"""
136136
get_v(subgraph::AbstractSubGraph, V::MultilayerVertex)
137137
138-
Return `v` associated with `V`.
138+
Return the integer label `v` associated to `MultilayerVertex` `V` within `subgraph`. Useful for indexing the weight matrix of `subgraph`.
139139
"""
140140
function get_v(subgraph::AbstractSubGraph, V::MultilayerVertex)
141141
# Convert V to a bare vertex

src/subgraphs/layer.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ Constructor for `Layer`.
6262
"""
6363
function Layer(
6464
descriptor::LayerDescriptor{T},
65-
vertices::Union{Vector{MultilayerVertex{nothing}}, Vector{Node}},
66-
edge_list::Union{Vector{<:MultilayerEdge}, Vector{NTuple{2, <:MultilayerVertex}}}
65+
vertices::Union{<:Vector{<:MultilayerVertex}, Vector{Node}},
66+
edge_list::Union{Vector{<:MultilayerEdge}, Vector{Tuple{ MultilayerVertex{nothing}, MultilayerVertex{nothing}}}}
6767
) where {T<:Integer}
6868
# First check that the vertices are of the correct type
6969
if hasproperty(eltype(vertices), :parameters)
@@ -199,7 +199,7 @@ function Layer(
199199

200200
@assert(ne <= maxe, "The number of required edges, $ne, is greater than the number of edges the provided graph supports i.e. $maxe" )
201201

202-
edge_list = NTuple{2, MultilayerVertex{nothing}}[] #MultilayerEdge
202+
edge_list = NTuple{2, MultilayerVertex}[] #MultilayerEdge
203203
already_chosen = Dict{MultilayerVertex, Vector{MultilayerVertex}}()
204204

205205
max_links_per_vertex = directed ? _nv : _nv-1
@@ -243,7 +243,7 @@ function Layer(
243243
default_edge_metadata = default_edge_metadata,
244244
)
245245

246-
edge_list = [rand() < 0.5 ? me : reverse(me) for me in edge_list]
246+
edge_list = [rand() < 0.5 ? tup : reverse(tup) for tup in edge_list]
247247
layer = Layer(descriptor, vertices, edge_list)
248248

249249
return layer
@@ -494,7 +494,7 @@ Returns an directed `Layer` with given `indegree_sequence` and `outdegree_sequen
494494

495495
equivalent_graph = kleitman_wang_graph_generator(indegree_sequence, outdegree_sequence)
496496

497-
edge_list = NTuple{2, MultilayerVertex}[]
497+
edge_list = NTuple{2, MultilayerVertex{nothing}}[]
498498

499499
if @isdefined(V)
500500
for edge in edges(equivalent_graph)

test/layer.jl

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,7 @@ rem_edge!(layer, rand_mv_1, rand_mv_2)
108108
@test rem_edge!(layer, rand_mv_1, rand_mv_2)
109109
@test add_edge!(layer, rand_mv_1, rand_mv_2, 3.14)
110110
@test has_edge(layer, rand_mv_1, rand_mv_2)
111-
@test layer.graph.weights[
112-
layer.v_V_associations(rand_mv_1), layer.v_V_associations(rand_mv_2)
113-
] ==
114-
layer.graph.weights[
115-
layer.v_V_associations(rand_mv_2), layer.v_V_associations(rand_mv_1)
116-
] ==
117-
3.14
111+
@test Graphs.weights(layer)[get_v(layer, rand_mv_1), get_v(layer, rand_mv_2) ] == Graphs.weights(layer)[get_v(layer, rand_mv_2), get_v(layer, rand_mv_1) ] == 3.14
118112
# Test uniform add_vertex!
119113
@test rem_vertex!(layer, rand_mv_1)
120114
@test !has_vertex(layer, rand_mv_1)
@@ -136,9 +130,7 @@ rem_edge!(layer, rand_mv_1, rand_mv_2)
136130
@test add_edge!(layer, rand_mv_1, rand_mv_2, weight=3.14, metadata=())
137131
@test has_edge(layer, rand_mv_1, rand_mv_2)
138132
# Why do I have to switch the vertices?
139-
@test layer.graph.weights[
140-
layer.v_V_associations(rand_mv_2), layer.v_V_associations(rand_mv_1)
141-
] == 3.14
133+
@test Graphs.weights(layer)[get_v(layer, rand_mv_1), get_v(layer, rand_mv_2) ] == 3.14
142134
# test hybrid add_edge!
143135
rem_edge!(layer, rand_mv_1, rand_mv_2)
144136
@test add_edge!(layer, rand_mv_1, rand_mv_2, 3.14)

0 commit comments

Comments
 (0)