Hi,
I just learnt about floweaver and started a small tutorial within my venv on Python 3.12.2 to get to know the package. However, when I run the code provided below, it raises me a TypeError.
This is my example code:
from floweaver import *
import pandas as pd
flows = pd.DataFrame([
{'source': 'farm1', 'target': 'Mary', 'value': 3, 'type': 'apples'},
{'source': 'farm1', 'target': 'James', 'value': 1, 'type': 'apples'},
{'source': 'farm2', 'target': 'Fred', 'value': 4, 'type': 'apples'},
{'source': 'farm2', 'target': 'Fred', 'value': 4, 'type': 'bananas'},
{'source': 'farm2', 'target': 'Susan', 'value': 4, 'type': 'bananas'},
{'source': 'farm3', 'target': 'Susan', 'value': 4, 'type': 'apples'},
{'source': 'farm4', 'target': 'Susan', 'value': 4, 'type': 'bananas'},
{'source': 'farm5', 'target': 'Susan', 'value': 4, 'type': 'bananas'},
{'source': 'farm6', 'target': 'Susan', 'value': 4, 'type': 'bananas'},
], columns=['source', 'target', 'value', 'type'])
# Set the default size to fit the documentation better.
size = dict(width=570, height=300)
nodes = {
'farms': ProcessGroup(['farm1', 'farm2', 'farm3',
'farm4', 'farm5', 'farm6']),
'customers': ProcessGroup(['James', 'Mary', 'Fred', 'Susan']),
}
ordering = [
['farms'], # put "farms" on the left...
['customers'], # ... and "customers" on the right.
]
bundles = [
Bundle('farms', 'customers'),
]
sdd = SankeyDefinition(nodes, bundles, ordering)
weave(sdd, flows).to_widget(**size)
raising the following error message:
TypeError Traceback (most recent call last)
Cell In[6], [line 33]
[29] bundles = [
[30] Bundle('farms', 'customers'),
[31] ]
[32] sdd = SankeyDefinition(nodes, bundles, ordering)
---> [33] weave(sdd, flows).to_widget(**size)
File \.venv\Lib\site-packages\floweaver\weave.py:36, in weave(sankey_definition, dataset, measures, link_width, link_color, palette, add_elsewhere_waypoints)
[33](file:/.venv/Lib/site-packages/floweaver/weave.py:33) dataset = Dataset(dataset)
[35](file:/.venv/Lib/site-packages/floweaver/weave.py:35) # Calculate the view graph (adding dummy nodes)
---> [36](file:/.venv/Lib/site-packages/floweaver/weave.py:36) GV = view_graph(sankey_definition)
[38](file:/.venv/Lib/site-packages/floweaver/weave.py:38) # Add implicit to/from Elsewhere bundles to the view definition to ensure
[39](file:/.venv/Lib/site-packages/floweaver/weave.py:39) # consistency.
[40](file:/.venv/Lib/site-packages/floweaver/weave.py:40) new_waypoints, new_bundles = elsewhere_bundles(sankey_definition, add_elsewhere_waypoints)
File \.venv\Lib\site-packages\floweaver\view_graph.py:14, in view_graph(sankey_definition)
[11](file:/.venv/Lib/site-packages/floweaver/view_graph.py:11) G.add_node(k, node=node)
[13](file:/.venv/Lib/site-packages/floweaver/view_graph.py:13) G.ordering = sankey_definition.ordering
---> [14](file:/.venv/Lib/site-packages/floweaver/view_graph.py:14) G = _add_bundles_to_graph(G, sankey_definition.bundles,
[15](file:/.venv/Lib/site-packages/floweaver/view_graph.py:15) _bundle_order(sankey_definition))
[17](file:/.venv/Lib/site-packages/floweaver/view_graph.py:17) return G
File \.venv\Lib\site-packages\floweaver\view_graph.py:32, in _add_bundles_to_graph(G, bundles, sort_key)
...
[20](file:/.venv/Lib/site-packages/floweaver/layered_graph.py:20) def get_node(self, u):
[21](file:/.venv/Lib/site-packages/floweaver/layered_graph.py:21) """Get the ProcessGroup or Waypoint associated with `u`"""
---> [22](file:/.venv/Lib/site-packages/floweaver/layered_graph.py:22) return self.nodes[u]['node']
TypeError: 'method' object is not subscriptable
I'm using floweaver 2.0.1 with
numpy 1.26.4
pandas 2.2.1
networkx 3.3
attrs 23.2.0
Can you please help me to employ the package?
Hi,
I just learnt about floweaver and started a small tutorial within my venv on Python 3.12.2 to get to know the package. However, when I run the code provided below, it raises me a TypeError.
This is my example code:
raising the following error message:
I'm using floweaver 2.0.1 with
numpy 1.26.4
pandas 2.2.1
networkx 3.3
attrs 23.2.0
Can you please help me to employ the package?