Qiskit / rustworkx

A high performance Python graph library implemented in Rust.
https://www.rustworkx.org
Apache License 2.0
991 stars 144 forks source link

[joss] Who uses retworkx and for what purpose? #513

Open szhorvat opened 2 years ago

szhorvat commented 2 years ago

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).

szhorvat commented 2 years ago

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.

IvanIsCoding commented 2 years ago

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):

Some uses within Qiskit that are worth sharing as well are: