> Message-ID: <[email protected]> >> 1) In the graphml output, for both edges, it is seeing 55657 as the >> source, for which I would have preferred seeing the same order in the >> data source. > The _current_ implementation of igraph happens to list the vertex with the > smaller _internal_ ID as the first one, although this is not guaranteed not > to > change in the future. (Note that the internal ID is usually not the same as > the > _name_ of the vertex -- the internal ID is always between 0 and |V|-1 and > igraph maintains them; it may even reassign internal IDs if you delete > vertices). If the order of the source and target really matters to you, > then > I start to wonder whether your graph is in fact directed and not > undirected.
The graph is undirected. >> 2) In the string representation of the graph, why is 59107 seen as the >> source when the graphml file tells otherwise? > Have you posted the full output of the string representation of the graph > or > just a snippet? When igraph prints the string representation, it should > list > the edge in both directions if the string representation uses the adjacency > list format. You are correct. I was looking at the output towards the end, so missed this detail. > Okay, I think I have to be a bit more detailed here. When you "print" the > graph > in the Python console, igraph actually prints a "graph summary", represented > by > a GraphSummary object. The GraphSummary object is constructed on-the-fly. > So, > print(g) is actually equivalent to summary(g, verbosity=1, width=None), > which > in turn invokes print(GraphSummary(g, verbosity=1, width=None)). > > Now, the GraphSummary object supports three different formats for > representing > the edge list: "edgelist", "compressed" and "adjlist". "compressed" is the > simplest representation where you get a bunch of strings like A--B (or A->B > in > case of directed graphs), separated by commas. "adjlist" is the one you see; > in > this case, each row represents a vertex (which is put in the front), > followed > by "--" or "->", then by the neighbors of the vertex. As a consequence, for > undirected graphs, each edge should appear twice. "edgelist" is the most > verbose representation where every row is a single edge and it even lists > the > edge attributes. By default, GraphSummary() chooses a format automatically > based on a few simple properties of the graph (mostly the median > out-degree). > However, you can specify a format on your own so you can test it yourself: > >>>> g = Graph([(0,1), (0,2)]) >>>> g.is_directed() > False >>>> summary(g, verbosity=1, width=None, edge_list_format="compressed") > IGRAPH U--- 3 2 -- > + edges: > 0--1 0--2 >>>> summary(g, verbosity=1, width=None, edge_list_format="adjlist") > IGRAPH U--- 3 2 -- > + edges: > 0 -- 1 2 > 1 -- 0 > 2 -- 0 > > You can see that the "adjlist" format indeed lists each edge twice. I think > this also answers your third question (i.e. whether there is a "pattern" in > the > order of the edges). I tried the most verbose option and got a bug. Will post it in git page. _______________________________________________ igraph-help mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/igraph-help
