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?
_______________________________________________
graph-tool mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to