Well, yeah, it is pretty open that it is the wrong tool for that job. Here's what the NetworkX documentation [0] says about its visualization support:
NetworkX provides basic functionality for visualizing graphs, but its main goal is to enable graph analysis rather than perform graph visualization. In the future, graph visualization functionality may be removed from NetworkX or only available as an add-on package.
Proper graph visualization is hard, and we highly recommend that people visualize their graphs with tools dedicated to that task. Notable examples of dedicated and fully-featured graph visualization tools are Cytoscape, Gephi, Graphviz and, for LaTeX typesetting, PGF/TikZ. To use these and other such tools, you should export your NetworkX graph into a format that can be read by those tools. For example, Cytoscape can read the GraphML format, and so, networkx.write_graphml(G, path) might be an appropriate choice.
[0] https://networkx.org/documentation/latest/reference/drawing....
Export to .dot -> open in your favourite viewer.
Netgraph implements numerous node layout algorithms and several edge routing routines. Uniquely among Python alternatives, it handles networks with multiple components gracefully (which otherwise break most node layout routines), and it post-processes the output of the node layout and edge routing algorithms with several heuristics to increase the interpretability of the visualisation (reduction of overlaps between nodes, edges, and labels; edge crossing minimisation and edge unbundling where applicable). The highly customisable plots are created using Matplotlib, and the resulting Matplotlib objects are exposed in an easily queryable format such that they can be further manipulated and/or animated using standard Matplotlib syntax. Finally, Netgraph also supports interactive changes: with the InteractiveGraph class, nodes and edges can be positioned using the mouse, and the EditableGraph class additionally supports insertion and deletion of nodes and edges as well as their (re-)labelling through standard text-entry.
[0] https://networkx.org/documentation/stable/reference/readwrit... [1] https://gephi.org/
[1] https://sourceforge.net/projects/electricdss/ [2] https://matpower.org
- https://en.m.wikipedia.org/wiki/Common_Information_Model_(electricity)
- https://zepben.bitbucket.io/cim/cim100/
- https://ontology.tno.nl/IEC_CIM/I’m working on the distribution side, I take my graph data from the inputs for power flow: cyme, synergi etc
Any idea why that is?
From my experience as an electrical engineer working for a distribution network:
* The traditional approach to network planning: take your edge cases (e.g. winter peak demand), and apply your engineering knowledge and intuition to manually study the most onerous outage conditions.
* This will vary on where you are in the world, but networks tend to have a good amount of slack built in.
* As networks become more complex, and the cost of computing has fallen, it's more feasible to automate contingency analysis (think about the number of different outage combinations for an N-2 scenario).
FWIW, the internal tools that I work on makes use of networkx to determine contingency cases.
This is only the steady state analysis, but there's also dynamics done when looking at specific generators also to look at a generator's response to fluctuations in voltage and frequency to ensure stability within certain operating conditions (weakening of the grid, rapid change in voltage or freq).
If they were wishy washy they were probably limited to doing distribution where you are assuming a single strong source (swing bus) at the substation and it's not your responsibility to think too much about adjusting the system behavior based off of changes in transmission (usually)
It's closer to an unstable chaotic system which needs constant balancing and tweaking.
1. Exposure of techniques, tools to people that are new to the field, or now the context is right.
2. People with experience share their insights and opinions (TIL: Igraph an/cugraph)
> On-Topic: Anything that good hackers would find interesting. That includes more than hacking and startups. If you had to reduce it to a sentence, the answer might be: anything that gratifies one's intellectual curiosity.
- https://github.com/johnhany/awesome-list#graph lists a few Tensorflow and Pytorch + graphs applications
CuGraph docs > List of Supported and Planned Algorithms: https://docs.rapids.ai/api/cugraph/stable/graph_support/algo...
https://github.com/rapidsai/cugraph#news :
> NEW! nx-cugraph, a NetworkX backend that provides GPU acceleration to NetworkX with zero code change. :
pip install nx-cugraph-cu11 --extra-index-url https://pypi.nvidia.com
export NETWORKX_AUTOMATIC_BACKENDS=cugraph> pytype (Google) [1], PyAnnotate (Dropbox) [2], and MonkeyType (Instagram) [3] all do dynamic / runtime PEP-484 type annotation type inference [4] to generate type annotations.
Hypothesis generates tests from type annotations; and icontract and pycontracts do runtime type checking.
I've tried the same in Rust with petgraph which resembles networkx, but it doesn't have the algorithm for Hamiltonian built in and I couldn't wrap my head around the DFS/BFS visitor pattern, but I'll continue this some day.
[1] "What are the best libraries to work with graphs?" https://www.reddit.com/r/Python/comments/185xexg/what_are_th...
NetworkX 3.0 - create, manipulate, and study complex networks in Python - https://news.ycombinator.com/item?id=34321135 - Jan 2023 (55 comments)
> Rustworkx was originally called retworkx and was created initially to be a replacement for qiskit's previous (and current) NetworkX usage (hence the original name). The project was originally started to build a faster directed graph to use as the underlying data structure for the DAG at the center of qiskit-terra's transpiler. However, since it's initial introduction the project has grown substantially and now covers all applications that need to work with graphs which includes Qiskit.
A lobster is a tree that reduces to a caterpillar when pruning all leaves.
[0] https://networkx.org/documentation/latest/reference/generate...Years back I used zoomcharts which was really good but had an expensive licence for on premise usage per client.