[WIP] Pyomo Model Plot
Summary/Motivation:
This PR adds a function to create a Plotly plot of the graph of a pyomo model. It is "interactive" in the sense that you get information about a component if you hover over the corresponding node.
Legal Acknowledgement
By contributing to this software project, I have read the contribution guide and agree to the following terms and conditions for my contribution:
- I agree my contributions are submitted under the BSD license.
- I represent I am authorized to make the contributions and grant the license. If my employer has rights to intellectual property that includes these contributions, I represent that I have received permission to make contributions and grant the required license on behalf of that employer.
Codecov Report
Merging #2251 (782ea93) into main (dbd4fae) will increase coverage by
0.01%. The diff coverage is96.34%.
@@ Coverage Diff @@
## main #2251 +/- ##
==========================================
+ Coverage 83.07% 83.09% +0.01%
==========================================
Files 607 608 +1
Lines 77018 77100 +82
==========================================
+ Hits 63984 64063 +79
- Misses 13034 13037 +3
| Flag | Coverage Δ | |
|---|---|---|
| linux | 80.37% <96.34%> (+0.01%) |
:arrow_up: |
| osx | 70.69% <96.34%> (+0.01%) |
:arrow_up: |
| other | 80.34% <96.34%> (+0.01%) |
:arrow_up: |
| win | 77.48% <96.34%> (+0.02%) |
:arrow_up: |
Flags with carried forward coverage won't be shown. Click here to find out more.
| Impacted Files | Coverage Δ | |
|---|---|---|
| pyomo/util/graph.py | 96.34% <96.34%> (ø) |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact),ø = not affected,? = missing dataPowered by Codecov. Last update dbd4fae...782ea93. Read the comment docs.
There was some discussion at the developers meeting about whether this belongs in pyomo.util or pyomo.contrib. There is some concern about introducing yet another implementation of "Pyomo model --> graph representation" functionality and a strong desire to develop a common solution for this that could be shared by this plotting utility, pyomo.contrib.community_detection, and pyomo.contrib.incidence_analysis.
Closing this for now. This PR inspired some great discussion around standardizing graph representations of Pyomo models in #2272 but we don't currently have the resources to get those ideas implemented in this PR like we wanted. This plotting functionality has been incorporated in pyomo.contrib.incidence_analysis in PR #2716.