extend networkx
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- python
- Domain
- stream-processing
Research direction
Start with the issue's two use cases and the proposed networkx DiGraph overrides: add_node, add_edge, and add_edge_from. Determine how streamz graphs are currently represented and how NetworkX compose and predecessor inspection should behave. Done means modular graphs can be composed while preserving intended node connections and exposing unmatched names for inspection.
Written by the indexing model from the issue text.
Description
Networkx provides many great tools for inspection, analysis, and manipulation of graphs. It might be nice to be able to use these tools when working with streamz.
Use Cases:
UC1:
- User1 writes a graph (graph1) to perform some analysis
- User2 would like to extend this analysis so they write a new pipeline (graph2) with dummy parent nodes with the same name as the nodes from graph1.
- User2 then uses
graph3 = nx.compose(graph2, graph1). Graph3 has nodes from both graphs allowing the graphs themselves to be built modularly.
UC2:
- User3 suspects something went wrong in the compose step because of a name mismatch. User3 uses
[f for f in graph3 if nx.predecessors(f) ==0]to find all the nodes with no parents. User3 then looks through the list and finds a node who's name didn't match and thus was not linked properly.
I think this can be done via a subclass of nx.DiGraph with select methods overridden, namely:
add_nodewhich now needs to take in a node class, args and kwargs and a nameadd_edgewhich now need to take in either- two node classes with args and kwargs (producing two new nodes)
- a node class with args and kwargs and a name
- two names
add_edge_fromso compose works properly.
Most of the overrides either need to init new nodes or provide connections between nodes.
- Dominant language
- Python
- Stars
- 1.3k
- Forks
- 149
- Avg merge
- 17h 39m
- Merged PRs (30d)
- 1
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from python-streamz/streamz
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
python-streamz/streamz#481 · 4 comments ·
-
Combining the streamz.Stream.filenames() and streamz.Stream.from_textfile() using dask scatter? Open
Difficulty 5/5 Over a week Newbie friendliness 25/100
python-streamz/streamz#480 · 2 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
python-streamz/streamz#479 · 1 comment ·
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
python-streamz/streamz#478 · 6 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 10/100
python-streamz/streamz#476 · 17 comments · 2 reactions ·
All issues in python-streamz/streamz
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
learningequality/ricecooker#747 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
run-llama/llama_index#23199 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
KhronosGroup/glTF-Blender-IO#2769 ·