[joss] Who uses retworkx and for what purpose?
I am wondering if you could show a few uses cases (outside of Qiskit) that illustrate what kinds retworkx is currently suitable for. Do you have some short but non-trivial examples of analysing complex networks? Demonstrating some graph theory problems? Implementing a simple graph algorithm?
This ties into my comments about the software paper.
One of the items to check off for JOSS reads:
Documentation:
Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
It would also be interesting to see a couple of specific usages within Qiskit (I assume some of these are representative of other general use cases as well). This will give an idea of what tasks the library is already good at. What I mean is to actually describe the task that is being solved rather than just say that "it's used within Qiskit" without specifying how.
I will argue that retworkx is currently suitable for shortest paths, maximum weight matching, and subgraph isomorphism on the algortihmic side; and manipulation of the dynamic DAGs on the graph representation side. Most of the examples will have to do with analysing graphs that come out of quantum computing applications, but other disciplines with the same subproblems (e.g. manipulation of DAGs for static analysis in Computer Security) can still reuse our code.
qtcodes is a major example of non-trivial analysis of networks. They analyse the syndrome graphs that arise in Quantum Error Correction (QEC):
- Using retworkx to calculate and count the number of unweighted shortest paths as in 1 2
- Using retworkx to find a minimum-weight perfect matching to generate surface codes as in 3
- Using retworkx to visualize syndrome graphs in general as in 4
Some uses within Qiskit that are worth sharing as well are:
- Use retworkx to calculate the depth of a quantum circuit (this one is trivial but is the most popular operation) as in 5
- Using retworkx to simplify chains of 1-qubit and 2-qubit operators on the DAGs that represent quantum circuits as in 6, 7, 8
- Using retworkx to implement Noise-Adaptive Compiler Mappings as in 9
- Using retworkx and subgraph isomorphism to map quantum circuits to quantum compute architectures as in 10