deflex.group_buses

deflex.group_buses(buses, fields)[source]

Group buses by parts of the label.

Parameters:
  • buses (list) – Buses to group.
  • fields (list) – Fields of the label to group the buses. Valid labels are cat, tag, subtag, region.
Returns:

Grouped buses

Return type:

dict

Examples

>>> import deflex as dflx
>>> from oemof.network.network import Bus
>>> fn = dflx.fetch_test_files("de03_fictive.dflx")
>>> my_results = dflx.restore_results(fn)
>>> mybuses = set([r[0] for r in my_results["main"].keys()
...     if isinstance(r[0], Bus)])
>>> sorted(dflx.group_buses(mybuses, ["cat", "tag", "subtag"]).keys())[:2]
[('commodity', 'all', 'H2'), ('commodity', 'all', 'bioenergy')]
>>> sorted(dflx.group_buses(mybuses, ["cat"]).keys())[:4]
[('commodity',), ('electricity',), ('heat',), ('mobility',)]
>>> c_buses = dflx.group_buses(mybuses, ["cat"])[('commodity',)]
>>> sorted(c_buses)[0].label
Label(cat='commodity', tag='all', subtag='H2', region='DE')
>>> len(c_buses)
10
>>> for bu in sorted(c_buses)[:3]:
...     print(repr(bu.label))
Label(cat='commodity', tag='all', subtag='H2', region='DE')
Label(cat='commodity', tag='all', subtag='bioenergy', region='DE01')
Label(cat='commodity', tag='all', subtag='bioenergy', region='DE02')