There are several pieces of functionality related to Graph
which are unsatisfactorily documented, to the point that they are simply unusable for real work. Even after repeated requests to support, the responsible developers simply refused to clarify these points. "There is no information available." This is a common response I receive when asking about functionality in the domain of graphs and networks.
How can Mathematica be taken seriously as a tool for network analysis or graph theory, if we don't even know what some of the functions do?
The last response I received suggested that for support, I might consider Wolfram Community, so I am posting here.
DegreeGraphDistribution
What is DegreeGraphDistribution
? There is basically no information about it.
DegreeGraphDistribution[dlist]
represents a degree graph distribution with vertex degree dlist.
"Degree graph distribution" is not a commonly used term. In fact, a google search only returns hits to the Mathematica documentation (or forums). So it's no exaggeration to say that the documentation says nothing at allthe description is a tautology.
Of course, I can make guesses about what DegreeGraphDistribution
is supposed to be, but who among the readers of this site would be willing to publish a paper based on results from a tool whose function they are just guessing about? And when I make those guesses and try to verify them, I find many inconsistencies.
I won't repeat the comments I made about this function over the years. Here's one example: https://mathematica.stackexchange.com/questions/167450/does-degreegraphdistribution-sample-uniformly Be aware that the sampling may not even be close to uniform, depending on the input.
RandomGraph[DegreeGraphDistribution[{5, 5, 2, 2, 1, 1}], 10000] //
CountsBy[AdjacencyMatrix] // KeySort // Values
FindGraphCommunities
There is basically zero documentation about the methods used by this function. The only problem is that with community detection, "what the function does" and "how it does it" are basically the same question. Thus the function is literally uselesswe don't know what it does.
It's not like computing eigenvalues where I can define what an "eigenvalue" is without detailing a procedure to compute it, and even verify that an eigenvalue/eigenvector result is correct without knowing how it was obtained. With community detection, the precise definition of the problem is the method itself (the rest is just an intuitive but far from precise statement).
When I ask about the methods of FindGraphCommunities
, there is usually no satisfactory answer. I did receive references to general papers such as https://arxiv.org/abs/0906.0612 but it was without specific statements on what is being used from this paper. I was no more knowledgeable after receiving this link than before I asked ...
Other users have the same experience (e.g. link1, link2).
Did you receive a response from support? Szabolcs May 24 '18 at 7:42
@Szabolcs Nope :( becko May 24 '18 at 8:31
These are the experiences that make me consider again and again if using Mathematica for working with graphs is a good idea at all, and a safe investment for the future. I wrote about this before and @Charles Pooh responded:
We are looking forward to dramatic expansions in Graphs & Networks functionality. We are even more excited about its many applications across different domains and the graph related functions in the pipeline.
Indeed, a class of important bugs were fixed in M12.0: now we can use EdgeDelete
/EdgeAdd
and VertexDelete
/VertexAdd
without breaking the graphs. But then consider how long that took (from version 8.0 to 11.3 this is broken), and how fundamental these operations are... These were overdue fixes, not dramatic improvements.
Additionally, several functions now (finally!) preserve graph properties, a critical functionality. Yet none of this was documented for Mathematica 12.0, and it's still unclear how properties get combined by functions such as VertexContract
. I could only learn about this change from one of the live-streamed meetings on Twitch. (They were also mentioned in the Graphs Twitch talk aired a week or so ago, which makes it even stranger that there's no documentation.)
What I am looking for is not for claims that issues will be dealt with, but for actual actions that show that our concerns are not dismissed. I find the responses relayed by support to be very discouraging. They definitely do not inspire confidence in the product. I understand that developers are busy sometimes, but the responses have been like this throughout the years (see e.g. the links above), not just in a busy period.