Message Boards Message Boards


Why does WRI refuse to document essential changes to Graph?

Posted 1 year ago
0 Replies
8 Total Likes

Mathematica 12.0 brought major positive changes to the handling of vertex and edge properties in Graphs. Before, almost all Graph processing functions discarded all properties (such as edge weights). If we took a Subgraph of a Graph, no properties were transferred. If we applied SimpleGraph, properties vanished.

Since Mathematica 12.0, most functions will transfer properties.

But there is zero documentation on this major change.

I asked many times to document it during the 12.0 prerelease period, but there was no reaction. Now 12.1 is out, and despite asking many times since then, there is still no documentation.


I can't understand this because this is a major positive change. But it is not possible to guess how to use this. Would you guess that the syntax Subgraph[..., Properties -> None] prevents property inheritance? This is critical syntax because dealing with properties involves a major performance hit.

What if you have a multigraph with different edge weights on parallel edges? What does SimpleGraph do? It turns out it adds up edge weights. This should be documented. What if we have non-numerical properties, how are those handled? Now in 12.1 we can have those in edge tagged graphs. What if we use VertexContract which involves both the merging of edges and vertices?

These are critical questions that are not answered at all, despite multiple requests.

It is symptomatic of the treatment of Graph. It feels like improvements must be extracted with pliers like a bad tooth, through unpleasant public complaints like this one.

It is also clear that these issues were never thought through. I just re-checked how edge properties are combined, it turns out that in 12.1, SimpleGraph adds up edge weights in an untagged graph, but takes the first edge's property in an EdgeTaggedGraph. Since none of these updates are documented, support can conveniently be refused as "undocumented functionality". Except that dealing with this behaviour unavoidable—it affects every aspect of one's work with weighted graphs. We can't just forget about how weights are handled because they will affect the results we get. Here I'll note that we still do not have a documented way to remove edge weights (IGUnweighted in my package, IGraph/M, uses undocumented methods).

It is true that 12.0 and 12.1 had finally, after many complaints, multiple important improvements to Graph. But the attitude towards user's complaints has not improved. It still clearly feels like whoever is in charge just doesn't care about creating a usable system.

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract