Skip to content

Make complement space

Produces the complement space of the combination space, useful for debugging and the multiprocessing function. Args: combination_space (OrderedSet): ordered set of target combinations (coalitions). elements (list): list of players. lesioned (Optional[any]): leseioned element that will not be present in any combination but every complement

Returns:

Type Description
OrderedSet

complements to be passed for lesioning.

Source code in msapy/msa.py
@typechecked
def make_complement_space(*,
                          combination_space: OrderedSet,
                          elements: list,
                          lesioned: Optional[any] = None) -> OrderedSet:
    """
    Produces the complement space of the combination space, useful for debugging
    and the multiprocessing function.
    Args:
        combination_space (OrderedSet):
            ordered set of target combinations (coalitions).
        elements (list):
            list of players.
        lesioned (Optional[any]):
            leseioned element that will not be present in any combination but every complement

    Returns:
        (OrderedSet): complements to be passed for lesioning.
    """
    _check_valid_elements(elements)
    elements = frozenset(elements)
    _check_valid_combination_space(combination_space, elements, lesioned)

    complement_space = OrderedSet()

    # iterate over all combinations and take their difference from set elements to find complements
    for combination in combination_space:
        complement_space.add(tuple(elements.difference(combination)))
    return complement_space