Hi all,

I'm trying to analyze a graph for which I have multiple layers and I'm finding difficulties in creating the graph. I have two graphs with the same vertex for which I define a edge property (the layer) like this:

(g_atac, dist_atac) = gt.generate_knn(A_data, k=n_neighbors)

(g_rna, dist_rna) = gt.generate_knn(R_data, k=n_neighbors)

layer_atac = g_atac.new_edge_property('int')

for e in g_atac.edges():

layer_atac[e] = 1

layer_rna = g_rna.new_edge_property('int')

for e in g_rna.edges():

layer_rna[e] = -1

g_atac.edge_properties['layer'] = layer_atac

g_rna.edge_properties['layer'] = layer_rna

I then merge the graphs by graph union, first defining a node mapping:

rna_mappings = g_rna.new_vertex_property("int")

for x in range(g_atac.num_vertices()):

rna_mappings[x] = x

and then performing the actual union:

gu = gt.graph_union(g_atac, g_rna, intersection=rna_mappings, internal_props=True)

This indeed creates the final graph, but I noticed that instead of two layers I have three:

np.unique(gu.edge_properties['layer'].a)

PropertyArray([-1, 0, 1], dtype=int32)

Looking back at the start graphs I have zeros in the edge_properties as well

np.unique(g_rna.edge_properties['layer'].a)

PropertyArray([-1, 0], dtype=int32)

np.unique(g_atac.edge_properties['layer'].a)

PropertyArray([0, 1], dtype=int32)

and, similarly, the elements in the edge property vector are much higher than the number of edges:

print((len(g_rna.ep['layer'].a), g_rna.num_edges()))

(156672, 14317)

which is different from what I can get from this:

g_rna.get_edges([g_rna.ep['layer']]).shape

(14317, 3)

I'm evidently messing with (internal) properties and I'm clueless, any advice?