plastid.util.services.sets module¶
Utilities for handling sets.
Exported functions¶
merge_sets()
Recursively merge of sets based upon common members, until all groups sharing common members are merged.
get_random_sets()
Generate random sets of members
- plastid.util.services.sets.get_random_sets(num_sets, max_len=3, members=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'])[source]¶
Generates random sets of members
- Parameters
- num_setsint
number of sets to generate
- max_lenint
maximum length for each set
- memberslist-like
Sequence of hashable members to put in each set (Default: letters a-p)
- Returns
- list
List of generated sets
- plastid.util.services.sets.merge_sets(list_of_sets, printer=None)[source]¶
Merges sets in a list if they have one or more common member, until all groups sharing common members are merged.
Merging takes places as follows:
All members in all sets are counted
All sets containing more than one member are merged via a call to
_merge_sets()
A set of unmerged single-member sets is generated by finding all members that appear in multi-member sets after step (2), and subtracting this set from the set generated in step (1)
The list of single- and multi-member sets are concatenated to create a final list
Repeat steps 1-4 until the number of sets is unchanged
- Parameters
- list_of_setslist
List of sets of hashable items
- printerfile-like, or None
Writer to which status is sent, as string, if not None (Default: None)
- Returns
- list
list of merged sets